mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 10:04:21 +03:00
Completed refactor of action name lists
This commit is contained in:
parent
78686c1f11
commit
24f8414080
|
@ -86,8 +86,8 @@ function togglePopup(material_id) {
|
||||||
<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">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_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">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#SP14" class="function-link"><span class="function-syntax">ActionNameLists::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#SP16" class="function-link"><span class="function-syntax">ActionNameLists::log</span></a><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *, </span><a href="4-anl.html#SP14" class="function-link"><span class="function-syntax">ActionNameLists::log_entry</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *, </span><a href="4-anl.html#SP16" class="function-link"><span class="function-syntax">ActionNameLists::log_entry</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</span><span class="plain-syntax"> *, </span><a href="4-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::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</span><span class="plain-syntax"> *, </span><a href="4-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::log</span></a><span class="plain-syntax">)</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IFModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IFModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -133,8 +133,8 @@ function togglePopup(material_id) {
|
||||||
<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">'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-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">'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#SP14" class="function-link"><span class="function-syntax">ActionNameLists::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#SP16" class="function-link"><span class="function-syntax">ActionNameLists::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">'8'</span><span class="plain-syntax">, </span><a href="4-anl.html#SP14" class="function-link"><span class="function-syntax">ActionNameLists::log_entry</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">'8'</span><span class="plain-syntax">, </span><a href="4-anl.html#SP16" class="function-link"><span class="function-syntax">ActionNameLists::log_entry</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-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::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-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::log</span></a><span class="plain-syntax">);</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="1-im.html#SP2">§2</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="1-im.html#SP2">§2</a>.</li></ul>
|
||||||
|
|
|
@ -87,7 +87,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 Name Lists</b></li></ul></div>
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Action Name Lists</b></li></ul></div>
|
||||||
<p class="purpose">Action name lists are used in parsing action patterns, and identify which action names seem to be possible within them.</p>
|
<p class="purpose">Action name lists are used in parsing action patterns, and identify which action names seem to be possible within them.</p>
|
||||||
|
|
||||||
<ul class="toc"><li><a href="4-anl.html#SP1">§1. Data structure</a></li><li><a href="4-anl.html#SP11">§11. Single and best actions</a></li><li><a href="4-anl.html#SP14">§14. Logging</a></li><li><a href="4-anl.html#SP15">§15. Parsing text to an ANL</a></li></ul><hr class="tocbar">
|
<ul class="toc"><li><a href="4-anl.html#SP1">§1. Data structure</a></li><li><a href="4-anl.html#SP13">§13. Single and best actions</a></li><li><a href="4-anl.html#SP16">§16. Logging</a></li><li><a href="4-anl.html#SP17">§17. Parsing text to an ANL</a></li></ul><hr class="tocbar">
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Data structure. </b>An ANL is a head object, an <a href="4-anl.html#SP1" class="internal">action_name_list</a>, which points to a linked
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Data structure. </b>An ANL is a head object, an <a href="4-anl.html#SP1" class="internal">action_name_list</a>, which points to a linked
|
||||||
list of <a href="4-anl.html#SP3" class="internal">anl_entry</a> objects.
|
list of <a href="4-anl.html#SP3" class="internal">anl_entry</a> objects.
|
||||||
|
@ -99,7 +99,7 @@ list of <a href="4-anl.html#SP3" class="internal">anl_entry</a> objects.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">negation_state</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">negation_state</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="plain-syntax">} </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::new_list</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">ActionNameLists::new_list</span></span>:<br/><a href="4-anl.html#SP16">§16</a>, <a href="4-anl.html#SP16_1">§16.1</a>, <a href="4-anl.html#SP16_2">§16.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">state</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::new_list</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">ActionNameLists::new_list</span></span>:<br/><a href="4-anl.html#SP19">§19</a>, <a href="4-anl.html#SP19_1">§19.1</a>, <a href="4-anl.html#SP19_2">§19.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">state</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="identifier-syntax">list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</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="identifier-syntax">list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_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">entries</span><span class="plain-syntax"> = </span><span class="identifier-syntax">first</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">entries</span><span class="plain-syntax"> = </span><span class="identifier-syntax">first</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">negation_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">state</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">negation_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">state</span><span class="plain-syntax">;</span>
|
||||||
|
@ -119,17 +119,17 @@ list is created.
|
||||||
<span class="definition-keyword">define</span> <span class="constant-syntax">ANL_NEGATED_ITEMWISE</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
|
<span class="definition-keyword">define</span> <span class="constant-syntax">ANL_NEGATED_ITEMWISE</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
|
||||||
</pre>
|
</pre>
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::listwise_negated</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">ActionNameLists::listwise_negated</span></span>:<br/><a href="4-anl.html#SP14">§14</a><br/>Action Patterns - <a href="4-ap2.html#SP34_1">§34.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">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::listwise_negated</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">ActionNameLists::listwise_negated</span></span>:<br/><a href="4-anl.html#SP16">§16</a><br/>Action Patterns - <a href="4-ap2.html#SP34_1">§34.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">negation_state</span><span class="plain-syntax"> == </span><span class="constant-syntax">ANL_NEGATED_LISTWISE</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">list</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">negation_state</span><span class="plain-syntax"> == </span><span class="constant-syntax">ANL_NEGATED_LISTWISE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::itemwise_negated</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">ActionNameLists::itemwise_negated</span></span>:<br/><a href="4-anl.html#SP14">§14</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::itemwise_negated</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">ActionNameLists::itemwise_negated</span></span>:<br/><a href="4-anl.html#SP16">§16</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">negation_state</span><span class="plain-syntax"> == </span><span class="constant-syntax">ANL_NEGATED_ITEMWISE</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">list</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">negation_state</span><span class="plain-syntax"> == </span><span class="constant-syntax">ANL_NEGATED_ITEMWISE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::positive</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">ActionNameLists::positive</span></span>:<br/><a href="4-anl.html#SP8">§8</a>, <a href="4-anl.html#SP9">§9</a>, <a href="4-anl.html#SP11">§11</a>, <a href="4-anl.html#SP13">§13</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::positive</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">ActionNameLists::positive</span></span>:<br/><a href="4-anl.html#SP10">§10</a>, <a href="4-anl.html#SP11">§11</a>, <a href="4-anl.html#SP13">§13</a>, <a href="4-anl.html#SP15">§15</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="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="identifier-syntax">negation_state</span><span class="plain-syntax"> == </span><span class="constant-syntax">ANL_POSITIVE</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">list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="identifier-syntax">negation_state</span><span class="plain-syntax"> == </span><span class="constant-syntax">ANL_POSITIVE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -145,15 +145,17 @@ action list.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</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="plain-syntax"> </span><span class="reserved-syntax">struct</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="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">anl_parsing_data</span><span class="plain-syntax"> </span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">anl_parsing_data</span><span class="plain-syntax"> </span><span class="reserved-syntax">parsing_data</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">marked_for_deletion</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">marked_for_deletion</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">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_link</span><span class="plain-syntax">; </span><span class="comment-syntax"> next in this ANL list</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_entry</span><span class="plain-syntax">; </span><span class="comment-syntax"> next in this ANL list</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::new_entry_at</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::new_entry_at</span></span>:<br/><a href="4-anl.html#SP16_1">§16.1</a>, <a href="4-anl.html#SP17_2">§17.2</a>, <a href="4-anl.html#SP19_1">§19.1</a>, <a href="4-anl.html#SP19_2">§19.2</a>, <a href="4-anl.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::new_entry_at</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::new_entry_at</span></span>:<br/><a href="4-anl.html#SP19_1">§19.1</a>, <a href="4-anl.html#SP22_1">§22.1</a>, <a href="4-anl.html#SP22_2">§22.2</a>, <a href="4-anl.html#SP23_1">§23.1</a>, <a href="4-anl.html#SP23_1_3_1">§23.1.3.1</a>, <a href="4-anl.html#SP23_1_3_2">§23.1.3.2</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="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP7" class="function-link"><span class="function-syntax">ActionNameLists::new_item</span></a><span class="plain-syntax">();</span>
|
<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><a href="4-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::new_item</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::new_parsing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">at</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> = -1;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">marked_for_deletion</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">at</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::new_parsing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">at</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="identifier-syntax">marked_for_deletion</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">entry</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure anl_entry is private to this section.</li></ul>
|
<ul class="endnotetexts"><li>The structure anl_entry is private to this section.</li></ul>
|
||||||
|
@ -182,10 +184,10 @@ entries which fail to change the word position.
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::remove_entries_marked_for_deletion</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">ActionNameLists::remove_entries_marked_for_deletion</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_7">§26.5.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::remove_entries_marked_for_deletion</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">ActionNameLists::remove_entries_marked_for_deletion</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_7">§26.5.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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="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="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = -1;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = -1;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">anl_entry</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="element-syntax">entries</span><span class="plain-syntax">, *</span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">entry</span><span class="plain-syntax">; </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</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">anl_entry</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="element-syntax">entries</span><span class="plain-syntax">, *</span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">entry</span><span class="plain-syntax">; </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">marked_for_deletion</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> == </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">marked_for_deletion</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> == </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax">)) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prev</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prev</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</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">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</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">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax">;</span>
|
||||||
|
@ -194,30 +196,98 @@ entries which fail to change the word position.
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>When not pruning the list, these macros are useful for working through it:
|
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>The list must be kept in a strict order, as can be seen:
|
||||||
|
</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::join_to</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">ActionNameLists::join_to</span></span>:<br/><a href="4-anl.html#SP7">§7</a>, <a href="4-anl.html#SP23_1_3_2">§23.1.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">earlier</span><span class="plain-syntax">, </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">later</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#SP7" class="function-link"><span class="function-syntax">ActionNameLists::precedes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">later</span><span class="plain-syntax">, </span><span class="identifier-syntax">earlier</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"misordering"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">earlier</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">later</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>Which uses the following function:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul class="items"><li>● Results in later word positions come first, and if that doesn't decide it
|
||||||
|
</li><li>● NAPs come before actions, and if that doesn't decide it
|
||||||
|
</li><li>● Older NAPs come before younger ones, and if that doesn't decide it
|
||||||
|
</li><li>● Less abbreviated results come first, and if that doesn't decide it
|
||||||
|
</li><li>● Older action names come before younger, and if that doesn't decide it
|
||||||
|
</li><li>● Later-discovered results come before earlier ones.
|
||||||
|
</li></ul>
|
||||||
|
<p class="commentary">Here, "older" and "younger" mean how long ago the relevant <a href="4-nap.html#SP1" class="internal">named_action_pattern</a>
|
||||||
|
or <a href="4-act.html#SP1" class="internal">action_name</a> objects were created, and since this happens in source text
|
||||||
|
order, we are really saying "closer to the top of the source text" when we
|
||||||
|
say "older".
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary">Note that this function is transitive (\(p(x, y)\) and \(p(y, z)\) implies \(p(x, z)\))
|
||||||
|
and antisymmetric (\(p(x, y)\) implies that \(p(y, x)\) is false). Strictly speaking
|
||||||
|
it is not trichotomous, but if neither \(p(x, y)\) nor \(p(y, x)\) then \(x\) and \(y\)
|
||||||
|
have identical item data; and in that case it doesn't matter which way round they
|
||||||
|
are in the list.
|
||||||
|
</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::precedes</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">ActionNameLists::precedes</span></span>:<br/><a href="4-anl.html#SP6">§6</a>, <a href="4-anl.html#SP23_1_3_2">§23.1.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax">, </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">e2</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> -</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">e2</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</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="reserved-syntax">if</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = ((</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">):10000000) -</span>
|
||||||
|
<span class="plain-syntax"> ((</span><span class="identifier-syntax">e2</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">e2</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">):10000000);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</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="reserved-syntax">if</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviation_level</span><span class="plain-syntax"> -</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">e2</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviation_level</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</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="reserved-syntax">if</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = ((</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_listed</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_listed</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">):10000000) -</span>
|
||||||
|
<span class="plain-syntax"> ((</span><span class="identifier-syntax">e2</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_listed</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">e2</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_listed</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">):10000000);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</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="reserved-syntax">if</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::join_entry</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">ActionNameLists::join_entry</span></span>:<br/><a href="4-anl.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">further</span><span class="plain-syntax">, </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tail</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">further</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">tail</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tail</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">further</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tail</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">entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP6" class="function-link"><span class="function-syntax">ActionNameLists::join_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">further</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">tail</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>When not pruning the list, these macros are useful for working through it:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_THROUGH_ANL</span><span class="plain-syntax">(</span><span class="identifier-syntax">var</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">)</span>
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_THROUGH_ANL</span><span class="plain-syntax">(</span><span class="identifier-syntax">var</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</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="identifier-syntax">NULL</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">var</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</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">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</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="identifier-syntax">NULL</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">var</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax">)</span>
|
||||||
<span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_THROUGH_ANL_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">var</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev_var</span><span class="plain-syntax">, </span><span class="identifier-syntax">next_var</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">)</span>
|
<span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_THROUGH_ANL_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">var</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev_var</span><span class="plain-syntax">, </span><span class="identifier-syntax">next_var</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</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="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">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</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="identifier-syntax">NULL</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">prev_var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">next_var</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="element-syntax">next_link</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">prev_var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">next_var</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="element-syntax">next_entry</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">var</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">var</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prev_var</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">next_var</span><span class="plain-syntax">, </span><span class="identifier-syntax">next_var</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">next_var</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">next_var</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</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">prev_var</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">next_var</span><span class="plain-syntax">, </span><span class="identifier-syntax">next_var</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">next_var</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">next_var</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||||
</pre>
|
</pre>
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::length</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">ActionNameLists::length</span></span>:<br/><a href="4-anl.html#SP11">§11</a><br/>Action Patterns - <a href="4-ap2.html#SP35">§35</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::length</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">ActionNameLists::length</span></span>:<br/><a href="4-anl.html#SP13">§13</a><br/>Action Patterns - <a href="4-ap2.html#SP35">§35</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">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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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="identifier-syntax">C</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="identifier-syntax">C</span><span class="plain-syntax">++;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::nonempty</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">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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::nonempty</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">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">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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>The <a href="4-anl.html#SP7" class="internal">anl_item</a> material is the actual content we are trying to get at:
|
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>The <a href="4-anl.html#SP9" class="internal">anl_item</a> material is the actual content we are trying to get at.
|
||||||
|
Like life, items are a mixture of naps and actions. At most one of these
|
||||||
|
fields is non-<span class="extract"><span class="extract-syntax">NULL</span></span>. If they are both <span class="extract"><span class="extract-syntax">NULL</span></span>, this represents "doing
|
||||||
|
anything" — a completely unrestricted action.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
@ -226,20 +296,25 @@ entries which fail to change the word position.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nap_listed</span><span class="plain-syntax">; </span><span class="comment-syntax"> or a named pattern instead</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nap_listed</span><span class="plain-syntax">; </span><span class="comment-syntax"> or a named pattern instead</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">anl_item</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="reserved-syntax">anl_item</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::new_item</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">ActionNameLists::new_item</span></span>:<br/><a href="4-anl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">anl_item</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::new_item</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::new_item</span></span>:<br/><a href="4-anl.html#SP3">§3</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">anl_item</span><span class="plain-syntax"> </span><span class="identifier-syntax">item</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="plain-syntax"> </span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_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="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_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="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="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">return</span><span class="plain-syntax"> </span><span class="identifier-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">item</span><span class="plain-syntax">;</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('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::first_item</span></span>:<br/><a href="4-anl.html#SP11">§11</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP26_1">§26.1</a>, <a href="4-ap2.html#SP34">§34</a>, <a href="4-ap2.html#SP35">§35</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::clear_item_data</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::clear_item_data</span></span>:<br/><a href="4-anl.html#SP23_1_1">§23.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</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">entry</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_listed</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">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('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::first_item</span></span>:<br/><a href="4-anl.html#SP13">§13</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP26_1">§26.1</a>, <a href="4-ap2.html#SP34">§34</a>, <a href="4-ap2.html#SP35">§35</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">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><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="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure anl_item is accessed in 4/ap2 and here.</li></ul>
|
<ul class="endnotetexts"><li>The structure anl_item is accessed in 4/ap2 and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>The following is one of Inform's standardised comparison routines, which
|
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </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
|
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
|
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
|
more specific description than A. This is transitive, and intended to be
|
||||||
|
@ -247,10 +322,10 @@ used in sorting algorithms.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::compare_specificity</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::compare_specificity</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP27">§27</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('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::compare_specificity</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP27">§27</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl2</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax">, </span><span class="identifier-syntax">count2</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax">, </span><span class="identifier-syntax">count2</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP8" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" 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#SP8" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl2</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">count2</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl2</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</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="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">count1</span><span class="plain-syntax"> < </span><span class="identifier-syntax">count2</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">count1</span><span class="plain-syntax"> > </span><span class="identifier-syntax">count2</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">count1</span><span class="plain-syntax"> > </span><span class="identifier-syntax">count2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
@ -269,17 +344,17 @@ used in sorting algorithms.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax">;</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="function-syntax">ActionNameLists::nap</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::nap</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_6">§26.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::nap</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::nap</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_6">§26.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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="element-syntax">nap_listed</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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="element-syntax">nap_listed</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">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="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::action</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">ActionNameLists::action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_4">§26.5.4</a>, <a href="4-ap2.html#SP26_5_5">§26.5.5</a>, <a href="4-ap2.html#SP26_5_6">§26.5.6</a>, <a href="4-ap2.html#SP26_6">§26.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::action</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">ActionNameLists::action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_4">§26.5.4</a>, <a href="4-ap2.html#SP26_5_5">§26.5.5</a>, <a href="4-ap2.html#SP26_5_6">§26.5.6</a>, <a href="4-ap2.html#SP26_6">§26.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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="element-syntax">action_listed</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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="element-syntax">action_listed</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">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="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>A given action <span class="extract"><span class="extract-syntax">an</span></span> falls within the context of this list if it appears
|
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>A given action <span class="extract"><span class="extract-syntax">an</span></span> falls within the context of this list if it appears
|
||||||
positively in the list, or negatively by not falling into a category excluded
|
positively in the list, or negatively by not falling into a category excluded
|
||||||
by it; for example, "examining" falls within "examining something", and also
|
by it; for example, "examining" falls within "examining something", and also
|
||||||
within "doing something other than looking at something" (a case of itemwise
|
within "doing something other than looking at something" (a case of itemwise
|
||||||
|
@ -287,13 +362,13 @@ negation) but not "doing something other than looking".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::covers_action</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">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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::covers_action</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">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="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">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>
|
<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>
|
||||||
<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="element-syntax">action_listed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">an</span><span class="plain-syntax">) </span><span class="identifier-syntax">within</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">item</span><span class="plain-syntax">-></span><span class="element-syntax">action_listed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">an</span><span class="plain-syntax">) </span><span class="identifier-syntax">within</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">item</span><span class="plain-syntax">-></span><span class="element-syntax">nap_listed</span><span class="plain-syntax">) </span><span class="identifier-syntax">within</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">item</span><span class="plain-syntax">-></span><span class="element-syntax">nap_listed</span><span class="plain-syntax">) </span><span class="identifier-syntax">within</span><span class="plain-syntax"> =</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-nap.html#SP3" class="function-link"><span class="function-syntax">NamedActionPatterns::covers_action</span></a><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">an</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="4-nap.html#SP4" class="function-link"><span class="function-syntax">NamedActionPatterns::covers_action</span></a><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">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">within</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">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">within</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="identifier-syntax">within</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</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="identifier-syntax">FALSE</span><span class="plain-syntax">)))</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><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="identifier-syntax">FALSE</span><span class="plain-syntax">)))</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -301,7 +376,7 @@ negation) but not "doing something other than looking".
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>The <a href="4-anl.html#SP10" class="internal">anl_parsing_data</a> material is needed on a temporary basis when parsing
|
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>The <a href="4-anl.html#SP12" class="internal">anl_parsing_data</a> material is needed on a temporary basis when parsing
|
||||||
the text leading to a list:
|
the text leading to a list:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -314,7 +389,7 @@ the text leading to a list:
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abbreviation_level</span><span class="plain-syntax">; </span><span class="comment-syntax"> number of words missing</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abbreviation_level</span><span class="plain-syntax">; </span><span class="comment-syntax"> number of words missing</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">anl_parsing_data</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">anl_parsing_data</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">anl_parsing_data</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::new_parsing_data</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::new_parsing_data</span></span>:<br/><a href="4-anl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">anl_parsing_data</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::new_parsing_data</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::new_parsing_data</span></span>:<br/><a href="4-anl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_parsing_data</span><span class="plain-syntax"> </span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_parsing_data</span><span class="plain-syntax"> </span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">at</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">at</span><span class="plain-syntax">;</span>
|
||||||
|
@ -323,62 +398,85 @@ the text leading to a list:
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::parc</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::parc</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5">§26.5</a>, <a href="4-ap2.html#SP26_5_1">§26.5.1</a>, <a href="4-ap2.html#SP26_6">§26.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::clear_parsing_data</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::clear_parsing_data</span></span>:<br/><a href="4-anl.html#SP23_1_1">§23.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</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">entry</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">at</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">at</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">in_clause</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">entry</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviation_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::parc</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parc</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5">§26.5</a>, <a href="4-ap2.html#SP26_5_1">§26.5.1</a>, <a href="4-ap2.html#SP26_6">§26.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::first_position</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">ActionNameLists::first_position</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5">§26.5</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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::par</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::par</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_4">§26.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||||
<span class="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="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::word_position</span></a><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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::word_position</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">ActionNameLists::word_position</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5">§26.5</a>, <a href="4-ap2.html#SP26_5_1_1">§26.5.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::same_word_position</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::same_word_position</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_6">§26.5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Y</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Y</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Y</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</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>
|
|
||||||
|
|
||||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::par</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::par</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_4">§26.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax"> > </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parameter</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">entry</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax"> > </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parameter</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::in_clause</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::in_clause</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_4">§26.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::in_clause</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::in_clause</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_4">§26.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">in_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">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">in_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">EMPTY_WORDING</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">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::add_parameter</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::add_parameter</span></span>:<br/><a href="4-anl.html#SP19_2">§19.2</a>, <a href="4-anl.html#SP23_1_2">§23.1.2</a>, <a href="4-anl.html#SP23_1_3_1">§23.1.3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</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">entry</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 entry"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax"> >= </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"too many ANL parameters"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parameter</span><span class="plain-syntax">[</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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">entry</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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">entry</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::add_in_clause</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::add_in_clause</span></span>:<br/><a href="4-anl.html#SP20_1">§20.1</a>, <a href="4-anl.html#SP22_2">§22.2</a>, <a href="4-anl.html#SP23_1_3">§23.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</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">entry</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 entry"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">in_clause</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::first_position</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::first_position</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5">§26.5</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="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::word_position</span></a><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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::word_position</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::word_position</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5">§26.5</a>, <a href="4-ap2.html#SP26_5_1_1">§26.5.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::same_word_position</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::same_word_position</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_5_6">§26.5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Y</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Y</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Y</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</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>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure anl_parsing_data is private to this section.</li></ul>
|
<ul class="endnotetexts"><li>The structure anl_parsing_data is private to this section.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Single and best actions. </b>This tests whether the list gives a single positive action:
|
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Single and best actions. </b>This tests whether the list gives a single positive action:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::single_positive_action</span></span>:<br/><a href="4-anl.html#SP12">§12</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="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::single_positive_action</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::single_positive_action</span></span>:<br/><a href="4-anl.html#SP14">§14</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#SP6" 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><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-anl.html#SP8" 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><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#SP7" 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>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-anl.html#SP9" 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>
|
||||||
<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">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>This is used only when the list is part of an exactly known action, so
|
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>This is used only when the list is part of an exactly known action, so
|
||||||
that it should contain just one item, and this should be an actual action,
|
that it should contain just one item, and this should be an actual action,
|
||||||
not a NAP.
|
not a NAP.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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::get_the_one_true_action</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::get_the_one_true_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP29">§29</a>, <a href="4-ap2.html#SP33">§33</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::get_the_one_true_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::get_the_one_true_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP29">§29</a>, <a href="4-ap2.html#SP33">§33</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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::single_positive_action</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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::single_positive_action</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">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="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Singleton ANL points to null 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="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">"Singleton ANL points to null 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">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">an</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>The "best" action is the one maximising the number of words in the fixed
|
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>The "best" action is the one maximising the number of words in the fixed
|
||||||
part of an action name: thus if there are actions "throwing away" and
|
part of an action name: thus if there are actions "throwing away" and
|
||||||
"throwing", then in the ANL arising from the text "throwing away the fish",
|
"throwing", then in the ANL arising from the text "throwing away the fish",
|
||||||
the action "throwing away" is better than the action "throwing".
|
the action "throwing away" is better than the action "throwing".
|
||||||
|
@ -390,14 +488,13 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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::get_best_action</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::get_best_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_3">§26.3</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::get_best_action</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::get_best_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26_3">§26.3</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">posn</span><span class="plain-syntax"> = -1, </span><span class="identifier-syntax">best_score</span><span class="plain-syntax"> = -1;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">posn</span><span class="plain-syntax"> = -1, </span><span class="identifier-syntax">best_score</span><span class="plain-syntax"> = -1;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">best</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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">best</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Getting single action from:\n$L\n"</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#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="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</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="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="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="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">if</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="element-syntax">action_listed</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</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="element-syntax">action_listed</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">score</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::entry_score</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">score</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP15" class="function-link"><span class="function-syntax">ActionNameLists::entry_score</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> != </span><span class="identifier-syntax">posn</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> != </span><span class="identifier-syntax">posn</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">posn</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">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">posn</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">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">posn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">posn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax">;</span>
|
||||||
|
@ -410,7 +507,6 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Posn %d AN $l\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">posn</span><span class="plain-syntax">, </span><span class="identifier-syntax">best</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">best</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">best</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -421,10 +517,10 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Logging. </b></p>
|
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. Logging. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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::log</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::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_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</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::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_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="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="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>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
@ -433,14 +529,14 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
<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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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="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="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"(%d). "</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"(%d). "</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-anl.html#SP14" class="function-link"><span class="function-syntax">ActionNameLists::log_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP16" class="function-link"><span class="function-syntax">ActionNameLists::log_entry</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="identifier-syntax">c</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="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::listwise_negated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" ]"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::listwise_negated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</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="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('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">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="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="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="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>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
@ -449,14 +545,14 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
<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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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="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">if</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="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" / "</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" / "</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-anl.html#SP14" class="function-link"><span class="function-syntax">ActionNameLists::log_entry_briefly</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP16" class="function-link"><span class="function-syntax">ActionNameLists::log_entry_briefly</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="identifier-syntax">c</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="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::listwise_negated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" ]"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::listwise_negated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</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="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_entry</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log_entry</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">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_entry</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log_entry</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">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</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">entry</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-entry>"</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-entry>"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
@ -485,55 +581,81 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. Parsing text to an ANL. </b></p>
|
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Parsing text to an ANL. </b>Action name lists arise only for parsing text, and only from the function below;
|
||||||
|
this might match, for example, "doing something other than waiting", or
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
"dropping the box". We make no effort to understand the words which are not
|
||||||
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl_being_parsed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
part of the action: "dropping the box" is just "dropping (two words)" here.
|
||||||
</pre>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>The following handles action name lists, such as:
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<blockquote>
|
<p class="commentary">Note that it works in either <span class="extract"><span class="extract-syntax">IS_TENSE</span></span> or <span class="extract"><span class="extract-syntax">HASBEEN_TENSE</span></span>, and that <span class="extract"><span class="extract-syntax">sense</span></span>
|
||||||
<p>doing something other than waiting</p>
|
is set to <span class="extract"><span class="extract-syntax">FALSE</span></span> (if it is supplied) when the text had a negative sense —
|
||||||
</blockquote>
|
something other than something — or <span class="extract"><span class="extract-syntax">TRUE</span></span> for a positive one.
|
||||||
|
</p>
|
||||||
|
|
||||||
<blockquote>
|
<p class="commentary">The test group <span class="extract"><span class="extract-syntax">:anl</span></span> is helpful in catching errors here.
|
||||||
<p>taking or dropping the box</p>
|
</p>
|
||||||
</blockquote>
|
|
||||||
|
|
||||||
<p class="commentary">At this stage in parsing, we are identifying possible actions, and
|
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b></p>
|
||||||
what their possible operands are, but we aren't trying to parse those
|
|
||||||
operands.
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::parse</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parse</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP23">§23</a>, <a href="4-ap2.html#SP26_3">§26.3</a>, <a href="4-ap2.html#SP26_4">§26.4</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sense</span><span 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::mismatched_brackets</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tense</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">r</span><span class="plain-syntax"> = </span><span class="function-syntax"><action-list></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_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">r</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sense</span><span class="plain-syntax">) *</span><span class="identifier-syntax">sense</span><span class="plain-syntax"> = </span><span class="function-syntax"><<r>></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="function-syntax"><<rp>></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>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>The outer parts of the syntax are handled by a Preform grammar.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||||
<span class="Preform-function-syntax"><action-list></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
<span class="Preform-function-syntax"><action-list></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">other</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">than</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-excluded></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"> { FALSE, RP[1] }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">other</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">than</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><excluded-list></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"> { FALSE, RP[1] }</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">except</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-excluded></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"> { FALSE, RP[1] }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">except</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><excluded-list></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"> { FALSE, RP[1] }</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to/with</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-to-tail></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"> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to/with</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-to-tail></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"> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) }</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP16_1" class="named-paragraph-link"><span class="named-paragraph">Construct ANL for anything</span><span class="named-paragraph-number">16.1</span></a></span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP19_1" class="named-paragraph-link"><span class="named-paragraph">Construct ANL for anything</span><span class="named-paragraph-number">19.1</span></a></span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</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"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { fail }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</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"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { fail }</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) }</span>
|
||||||
|
|
||||||
<span class="Preform-function-syntax"><anl-excluded></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
<span class="Preform-function-syntax"><excluded-list></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to/with</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{<anl-minimal-common-operand>}</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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP16_2" class="named-paragraph-link"><span class="named-paragraph">Add to-clause to excluded ANL</span><span class="named-paragraph-number">16.2</span></a></span><span class="Preform-constant-syntax">;</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to/with</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{<minimal-common-to-text>}</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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP19_2" class="named-paragraph-link"><span class="named-paragraph">Add to-clause to excluded ANL</span><span class="named-paragraph-number">19.2</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { TRUE, ActionNameLists::new_list(RP[1], ANL_NEGATED_LISTWISE) }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { TRUE, ActionNameLists::new_list(RP[1], ANL_NEGATED_LISTWISE) }</span>
|
||||||
|
|
||||||
<span class="Preform-function-syntax"><anl-minimal-common-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
<span class="Preform-function-syntax"><minimal-common-to-text></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_,/or</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"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { fail }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_,/or</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"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { fail }</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to/with</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"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { fail }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to/with</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"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { fail }</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span>
|
||||||
</pre>
|
</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>
|
<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="SP16_1" class="paragraph-anchor"></a><b>§16.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Construct ANL for anything</span><span class="named-paragraph-number">16.1</span></span><span class="Preform-comment-syntax"> =</span>
|
<p class="commentary firstcommentary"><a id="SP19_1" class="paragraph-anchor"></a><b>§19.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Construct ANL for anything</span><span class="named-paragraph-number">19.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</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">TRUE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP1" class="function-link"><span class="function-syntax">ActionNameLists::new_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">, </span><span class="constant-syntax">ANL_POSITIVE</span><span class="plain-syntax">) };</span>
|
<span class="plain-syntax"> ==> { </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP1" class="function-link"><span class="function-syntax">ActionNameLists::new_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">ANL_POSITIVE</span><span class="plain-syntax">) };</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP16">§16</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP19">§19</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>The trickiest form is:
|
<p class="commentary firstcommentary"><a id="SP19_2" class="paragraph-anchor"></a><b>§19.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add to-clause to excluded ANL</span><span class="named-paragraph-number">19.2</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">entry</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-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">entry</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_listed</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="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::add_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><excluded-list></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">FALSE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP1" class="function-link"><span class="function-syntax">ActionNameLists::new_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">ANL_NEGATED_ITEMWISE</span><span class="plain-syntax">) };</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP19">§19</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>The trickiest form is:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
|
@ -544,51 +666,38 @@ operands.
|
||||||
the text as if it does, including an "in" clause.
|
the text as if it does, including an "in" clause.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary">So the following finds the first "in" within its range of words, except that
|
<p class="commentary">So <text-of-in-clause> finds the first "in" within its range of words, except
|
||||||
it throws out an "in" that we consider bogus for our own syntactic purposes:
|
that it throws out an "in" that we consider bogus for our own syntactic purposes:
|
||||||
for instance, we don't want to count the "in" from "fixed in place".
|
for instance, we don't want to count the "in" from "fixed in place".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||||
<span class="Preform-function-syntax"><anl-to-tail></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
<span class="Preform-function-syntax"><anl-to-tail></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-in-tail></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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP17_1" class="named-paragraph-link"><span class="named-paragraph">Augment ANL with in clause</span><span class="named-paragraph-number">17.1</span></a></span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><text-of-in-clause></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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP20_1" class="named-paragraph-link"><span class="named-paragraph">Augment ANL with in clause</span><span class="named-paragraph-number">20.1</span></a></span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
||||||
|
|
||||||
<span class="Preform-function-syntax"><anl-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
<span class="Preform-function-syntax"><anl-operand></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"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP17_2" class="named-paragraph-link"><span class="named-paragraph">Construct ANL for anything applied</span><span class="named-paragraph-number">17.2</span></a></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"> { TRUE, ActionNameLists::entry_for_to_tail(W) };</span>
|
||||||
|
|
||||||
<span class="Preform-function-syntax"><anl-in-tail></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
<span class="Preform-function-syntax"><text-of-in-clause></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">fixed</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">place</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { advance Wordings::delta(WR[1], W) }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">fixed</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">place</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { advance Wordings::delta(WR[1], W) }</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">is/are/was/were/been/listed</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">***</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"> { advance Wordings::delta(WR[1], W) }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">is/are/was/were/been/listed</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">***</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"> { advance Wordings::delta(WR[1], W) }</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</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"> { TRUE, - }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</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"> { TRUE, - }</span>
|
||||||
</pre>
|
</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>
|
<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="SP17_1" class="paragraph-anchor"></a><b>§17.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Augment ANL with in clause</span><span class="named-paragraph-number">17.1</span></span><span class="Preform-comment-syntax"> =</span>
|
<p class="commentary firstcommentary"><a id="SP20_1" class="paragraph-anchor"></a><b>§20.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Augment ANL with in clause</span><span class="named-paragraph-number">20.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</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="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::add_in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><text-of-in-clause></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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">in_clause</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><anl-in-tail></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP17">§17</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP20">§20</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP17_2" class="paragraph-anchor"></a><b>§17.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Construct ANL for anything applied</span><span class="named-paragraph-number">17.2</span></span><span class="comment-syntax"> =</span>
|
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>This matches a comma/or-separated list of items:
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((!</span><span class="identifier-syntax">preform_lookahead_mode</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">anl_being_parsed</span><span class="plain-syntax">)) </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl_being_parsed</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">new_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">));</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parameter</span><span class="plain-syntax">[</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax">++;</span>
|
|
||||||
<span class="plain-syntax"> ==> { </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> };</span>
|
|
||||||
</pre>
|
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP17">§17</a>.</li></ul>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>Now for the basic list of actions being included:
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||||
<span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
<span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-entry></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-tail></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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP18_1" class="named-paragraph-link"><span class="named-paragraph">Join parsed ANLs</span><span class="named-paragraph-number">18.1</span></a></span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-entry></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-tail></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, ActionNameLists::join_entry(RP[1], RP[2]) }</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-entry></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-entry></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
||||||
|
|
||||||
<span class="Preform-function-syntax"><anl-tail></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
<span class="Preform-function-syntax"><anl-tail></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||||
|
@ -596,7 +705,36 @@ for instance, we don't want to count the "in" from "fixed in place".
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_,/or</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_,/or</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
||||||
</pre>
|
</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>
|
<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="SP19" class="paragraph-anchor"></a><b>§19. </b>Which reduces us to an internal nonterminal for an entry in this list.
|
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>Items can be named action patterns, so let's get those out of the way first:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||||
|
<span class="Preform-function-syntax"><anl-entry></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||||
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><named-action-pattern></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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP22_1" class="named-paragraph-link"><span class="named-paragraph">Make a NAP entry</span><span class="named-paragraph-number">22.1</span></a></span>
|
||||||
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><named-action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><text-of-in-clause></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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP22_2" class="named-paragraph-link"><span class="named-paragraph">Make a NAP entry with an in clause</span><span class="named-paragraph-number">22.2</span></a></span>
|
||||||
|
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-entry-with-action></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 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="SP22_1" class="paragraph-anchor"></a><b>§22.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make a NAP entry</span><span class="named-paragraph-number">22.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</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">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">RP</span><span class="plain-syntax">[1];</span>
|
||||||
|
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">0</span><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-anl.html#SP22">§22</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP22_2" class="paragraph-anchor"></a><b>§22.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make a NAP entry with an in clause</span><span class="named-paragraph-number">22.2</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</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">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">RP</span><span class="plain-syntax">[1];</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::add_in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><text-of-in-clause></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">0</span><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-anl.html#SP22">§22</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>Which reduces us to an internal nonterminal for an entry in this list.
|
||||||
It actually produces multiple matches: for example,
|
It actually produces multiple matches: for example,
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -611,176 +749,144 @@ end, but it's syntactically valid.)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||||
<span class="Preform-function-syntax"><anl-entry></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><named-action-pattern></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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP19_1" class="named-paragraph-link"><span class="named-paragraph">Make an action pattern from named behaviour</span><span class="named-paragraph-number">19.1</span></a></span>
|
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><named-action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-in-tail></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"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP19_2" class="named-paragraph-link"><span class="named-paragraph">Make an action pattern from named behaviour plus in</span><span class="named-paragraph-number">19.2</span></a></span>
|
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-entry-with-action></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
|
||||||
|
|
||||||
<span class="Preform-function-syntax"><named-action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
|
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">named_action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">nap</span><span class="Preform-plain-syntax"> = </span><a href="4-nap.html#SP2" class="function-link"><span class="Preform-function-syntax">NamedActionPatterns::by_name</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-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">nap</span><span class="Preform-plain-syntax">) {</span>
|
|
||||||
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">nap</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><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-function-syntax"><anl-entry-with-action></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
|
<span class="Preform-function-syntax"><anl-entry-with-action></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
|
||||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">anl_entry</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">anl</span><span class="Preform-plain-syntax"> = </span><a href="4-anl.html#SP21" class="function-link"><span class="Preform-function-syntax">ActionNameLists::anl_parse_internal</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-reserved-syntax">anl_entry</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">results</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">anl</span><span class="Preform-plain-syntax">) {</span>
|
<span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP23_1" class="named-paragraph-link"><span class="named-paragraph">Parse the wording into a list of results</span><span class="named-paragraph-number">23.1</span></a></span><span class="Preform-plain-syntax">;</span>
|
||||||
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">anl</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">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">results</span><span class="Preform-plain-syntax">) {</span>
|
||||||
|
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">results</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>
|
||||||
<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-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-plain-syntax">}</span>
|
||||||
</pre>
|
</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>
|
<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="SP19_1" class="paragraph-anchor"></a><b>§19.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an action pattern from named behaviour</span><span class="named-paragraph-number">19.1</span></span><span class="Preform-comment-syntax"> =</span>
|
<p class="commentary firstcommentary"><a id="SP23_1" class="paragraph-anchor"></a><b>§23.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the wording into a list of results</span><span class="named-paragraph-number">23.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">));</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</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><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> };</span>
|
|
||||||
</pre>
|
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP19">§19</a>.</li></ul>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP19_2" class="paragraph-anchor"></a><b>§19.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an action pattern from named behaviour plus in</span><span class="named-paragraph-number">19.2</span></span><span class="comment-syntax"> =</span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">));</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</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="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">in_clause</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><anl-in-tail></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> };</span>
|
|
||||||
</pre>
|
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP19">§19</a>.</li></ul>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP16_2" class="paragraph-anchor"></a><b>§16.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add to-clause to excluded ANL</span><span class="named-paragraph-number">16.2</span></span><span class="comment-syntax"> =</span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">anl</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-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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_listed</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="plain-syntax"> }</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parameter</span><span class="plain-syntax">[</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax">] = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><anl-excluded></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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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="identifier-syntax">list</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP1" class="function-link"><span class="function-syntax">ActionNameLists::new_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">, </span><span class="constant-syntax">ANL_NEGATED_ITEMWISE</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> ==> { </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax"> };</span>
|
|
||||||
</pre>
|
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP16">§16</a>.</li></ul>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP18_1" class="paragraph-anchor"></a><b>§18.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Join parsed ANLs</span><span class="named-paragraph-number">18.1</span></span><span class="comment-syntax"> =</span>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">join</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_atom</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="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right_tail</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2];</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">left_atom</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">join</span><span class="plain-syntax"> = </span><span class="identifier-syntax">right_tail</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">right_tail</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">join</span><span class="plain-syntax"> = </span><span class="identifier-syntax">left_atom</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">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">right_tail</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">left_atom</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">join</span><span class="plain-syntax"> = </span><span class="identifier-syntax">right_tail</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> }</span>
|
|
||||||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">join</span><span class="plain-syntax"> };</span>
|
|
||||||
</pre>
|
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP18">§18</a>.</li></ul>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b></p>
|
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::parse</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parse</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP23">§23</a>, <a href="4-ap2.html#SP26_3">§26.3</a>, <a href="4-ap2.html#SP26_4">§26.4</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span 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::mismatched_brackets</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tense</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">r</span><span class="plain-syntax"> = </span><span class="function-syntax"><action-list></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_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">r</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
|
||||||
</pre>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b></p>
|
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
|
||||||
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::anl_parse_internal</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::anl_parse_internal</span></span>:<br/><a href="4-anl.html#SP19">§19</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Parsing ANL from %W (tense %d)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">anl_parsing_tense</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">"Parsing ANL from %W (tense %d)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">new_anl</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">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">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">new_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(-1);</span>
|
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</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">x_ended</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP23_1_1" class="named-paragraph-link"><span class="named-paragraph">Ready the trial entry for another test</span><span class="named-paragraph-number">23.1.1</span></a></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">fc</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">RW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it_optional</span><span class="plain-syntax"> = </span><a href="4-ann.html#SP8" class="function-link"><span class="function-syntax">ActionNameNames::it_optional</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="named-paragraph-container code-font"><a href="4-anl.html#SP23_1_2" class="named-paragraph-link"><span class="named-paragraph">Make the trial entry fit this action, if possible, leaving remaining text in RW</span><span class="named-paragraph-number">23.1.2</span></a></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">abbreviable</span><span class="plain-syntax"> = </span><a href="4-ann.html#SP8" class="function-link"><span class="function-syntax">ActionNameNames::abbreviable</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="named-paragraph-container code-font"><a href="4-anl.html#SP23_1_3" class="named-paragraph-link"><span class="named-paragraph">Consider the trial entry for inclusion in the results list</span><span class="named-paragraph-number">23.1.3</span></a></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax"> = </span><a href="4-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::tensed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">tense</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">NoMatch:</span><span class="plain-syntax"> ;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_listed</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">in_clause</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">w_m</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">), </span><span class="identifier-syntax">x_m</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</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">w_m</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="identifier-syntax">x_m</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">))) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">x_m</span><span class="plain-syntax">++) != </span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">w_m</span><span class="plain-syntax">++)) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fc</span><span class="plain-syntax">=1; </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">DontInclude</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">x_m</span><span class="plain-syntax"> > </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">x_ended</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">; }</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><object-pronoun></span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">x_m</span><span class="plain-syntax">))) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">w_m</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="identifier-syntax">x_ended</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> = -1, </span><span class="identifier-syntax">k</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax">=(</span><span class="identifier-syntax">it_optional</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">w_m</span><span class="plain-syntax">):(</span><span class="identifier-syntax">w_m</span><span class="plain-syntax">+1); </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="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">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">x_m</span><span class="plain-syntax">+1)) { </span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">k</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"><0) { </span><span class="identifier-syntax">fc</span><span class="plain-syntax">=2; </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">DontInclude</span><span 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">-1 >= </span><span class="identifier-syntax">w_m</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parameter</span><span class="plain-syntax">[</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">w_m</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">-1);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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">new_anl</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parameter</span><span class="plain-syntax">[</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</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">new_anl</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax">++;</span>
|
|
||||||
<span class="plain-syntax"> }</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">w_m</span><span class="plain-syntax"> = </span><span class="identifier-syntax">j</span><span class="plain-syntax">; </span><span class="identifier-syntax">x_m</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">x_ended</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">w_m</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="identifier-syntax">x_ended</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">abbreviable</span><span class="plain-syntax">) </span><span class="identifier-syntax">x_ended</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">fc</span><span class="plain-syntax">=3; </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">DontInclude</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">x_m</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviation_level</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">)-</span><span class="identifier-syntax">x_m</span><span class="plain-syntax">+1;</span>
|
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">inc</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">w_m</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="identifier-syntax">inc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><anl-in-tail></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">w_m</span><span class="plain-syntax">))) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">in_clause</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><anl-in-tail></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">inc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><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><span class="identifier-syntax">anl_being_parsed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_anl</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"><anl-to-tail></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">w_m</span><span class="plain-syntax">))) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> }</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">anl_being_parsed</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</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">inc</span><span 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_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">anl_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_anl</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">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl_list</span><span class="plain-syntax">, *</span><span class="identifier-syntax">prev</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">pos</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">pos</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviation_level</span><span class="plain-syntax"> < </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviation_level</span><span class="plain-syntax">))</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prev</span><span class="plain-syntax">) </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">anl_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">next_link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</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">new_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(-1);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DontInclude:</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Parsing ANL from %W resulted in:\n$8\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">anl_list</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">"Parsing ANL from %W resulted in:\n$8\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">results</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">anl_list</span><span class="plain-syntax">;</span>
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP23">§23</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP23_1_1" class="paragraph-anchor"></a><b>§23.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ready the trial entry for another test</span><span class="named-paragraph-number">23.1.1</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</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-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::clear_item_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::clear_parsing_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP23_1">§23.1</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP23_1_2" class="paragraph-anchor"></a><b>§23.1.2. </b>Here <span class="extract"><span class="extract-syntax">XW</span></span> will be the wording of the action name, say "removing it from";
|
||||||
|
we try to fit <span class="extract"><span class="extract-syntax">W</span></span> to this, say "removing a heavy thing from something in the
|
||||||
|
Dining Room"; and if we cannot, we run away to the label <span class="extract"><span class="extract-syntax">NoMatch</span></span>, which is
|
||||||
|
inelegant, but there's no elegant way to break out of nested loops in C.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make the trial entry fit this action, if possible, leaving remaining text in RW</span><span class="named-paragraph-number">23.1.2</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">x_ended</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">it_optional</span><span class="plain-syntax"> = </span><a href="4-ann.html#SP8" class="function-link"><span class="function-syntax">ActionNameNames::it_optional</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">abbreviable</span><span class="plain-syntax"> = </span><a href="4-ann.html#SP8" class="function-link"><span class="function-syntax">ActionNameNames::abbreviable</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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax"> = </span><a href="4-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::tensed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">anl_parsing_tense</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">w_m</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">), </span><span class="identifier-syntax">x_m</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</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">w_m</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="identifier-syntax">x_m</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">))) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">x_m</span><span class="plain-syntax">++) != </span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">w_m</span><span class="plain-syntax">++)) </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">NoMatch</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">x_m</span><span class="plain-syntax"> > </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">x_ended</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">; }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><object-pronoun></span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">x_m</span><span class="plain-syntax">))) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">w_m</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="identifier-syntax">x_ended</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> = -1, </span><span class="identifier-syntax">k</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax">=(</span><span class="identifier-syntax">it_optional</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">w_m</span><span class="plain-syntax">):(</span><span class="identifier-syntax">w_m</span><span class="plain-syntax">+1); </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="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">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">) == </span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">x_m</span><span class="plain-syntax">+1)) { </span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">k</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"><0) </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">NoMatch</span><span 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">-1 >= </span><span class="identifier-syntax">w_m</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::add_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">w_m</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</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-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::add_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">trial_entry</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">w_m</span><span class="plain-syntax"> = </span><span class="identifier-syntax">j</span><span class="plain-syntax">; </span><span class="identifier-syntax">x_m</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">x_ended</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">w_m</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="identifier-syntax">x_ended</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">abbreviable</span><span class="plain-syntax">) </span><span class="identifier-syntax">x_ended</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">NoMatch</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">x_m</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviation_level</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">)-</span><span class="identifier-syntax">x_m</span><span class="plain-syntax">+1;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">RW</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">w_m</span><span class="plain-syntax">);</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP23_1">§23.1</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP23_1_3" class="paragraph-anchor"></a><b>§23.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Consider the trial entry for inclusion in the results list</span><span class="named-paragraph-number">23.1.3</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</span><span class="plain-syntax">)) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP23_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Include the trial entry</span><span class="named-paragraph-number">23.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><text-of-in-clause></span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</span><span class="plain-syntax">)) {</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::add_in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><text-of-in-clause></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP23_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Include the trial entry</span><span class="named-paragraph-number">23.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="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-anl.html#SP23_1_3_1" class="function-link"><span class="function-syntax">ActionNameLists::parse_to_tail</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">RW</span><span class="plain-syntax">))) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP23_1_3_2" class="named-paragraph-link"><span class="named-paragraph">Include the trial entry</span><span class="named-paragraph-number">23.1.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP23_1">§23.1</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP23_1_3_1" class="paragraph-anchor"></a><b>§23.1.3.1. </b>As an aside, the following code runs a specially adapted form of <anl-to-tail>:
|
||||||
|
not one which parses any differently, just one which uses the trial entry and not
|
||||||
|
newly-created ones (which would be expensive on memory).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_tail_entry_being_parsed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::entry_for_to_tail</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::entry_for_to_tail</span></span>:<br/><a href="4-anl.html#SP20">§20</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="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((!</span><span class="identifier-syntax">preform_lookahead_mode</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">to_tail_entry_being_parsed</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to_tail_entry_being_parsed</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">entry</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::add_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::parse_to_tail</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parse_to_tail</span></span>:<br/><a href="4-anl.html#SP23_1_3">§23.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">result</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">to_tail_entry_being_parsed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><anl-to-tail></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">result</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">to_tail_entry_being_parsed</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">result</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP23_1_3_2" class="paragraph-anchor"></a><b>§23.1.3.2. </b>So this is the happy ending. We don't copy the trial entry; we insertion-sort
|
||||||
|
the structure itself into the results list, and make a fresh structure to be
|
||||||
|
the trial entry for future trials.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Include the trial entry</span><span class="named-paragraph-number">23.1.3.2</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">results</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">results</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trial_entry</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">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">results</span><span class="plain-syntax">, *</span><span class="identifier-syntax">prev</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">pos</span><span class="plain-syntax">) && (</span><a href="4-anl.html#SP7" class="function-link"><span class="function-syntax">ActionNameLists::precedes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">)))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prev</span><span class="plain-syntax">) </span><a href="4-anl.html#SP6" class="function-link"><span class="function-syntax">ActionNameLists::join_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">results</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP6" class="function-link"><span class="function-syntax">ActionNameLists::join_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">pos</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP23_1_3">§23.1.3</a> (three times).</li></ul>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-ann.html">❮</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-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-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-->
|
</nav><!--End of weave-->
|
||||||
|
|
|
@ -148,7 +148,7 @@ enough that this is almost never used.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::tensed</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">ActionNameNames::tensed</span></span>:<br/><a href="4-ann.html#SP10">§10</a>, <a href="4-ann.html#SP11">§11</a>, <a href="4-ann.html#SP13">§13</a><br/>Actions Plugin - <a href="4-ap.html#SP8">§8</a><br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP3">§3</a><br/>Actions - <a href="4-act.html#SP3">§3</a><br/>Action Semantics - <a href="4-as.html#SP6_1">§6.1</a><br/>Action Name Lists - <a href="4-anl.html#SP14">§14</a>, <a href="4-anl.html#SP21">§21</a><br/>Grammar Lines - <a href="5-gl.html#SP21">§21</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="identifier-syntax">tense</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::tensed</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">ActionNameNames::tensed</span></span>:<br/><a href="4-ann.html#SP10">§10</a>, <a href="4-ann.html#SP11">§11</a>, <a href="4-ann.html#SP13">§13</a><br/>Actions Plugin - <a href="4-ap.html#SP8">§8</a><br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP3">§3</a><br/>Actions - <a href="4-act.html#SP3">§3</a><br/>Action Semantics - <a href="4-as.html#SP6_1">§6.1</a><br/>Action Name Lists - <a href="4-anl.html#SP16">§16</a>, <a href="4-anl.html#SP23_1_2">§23.1.2</a><br/>Grammar Lines - <a href="5-gl.html#SP21">§21</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="identifier-syntax">tense</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">present_name</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">present_name</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">HASBEEN_TENSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">past_name</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">HASBEEN_TENSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">past_name</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"action tense unsupported"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"action tense unsupported"</span><span class="plain-syntax">);</span>
|
||||||
|
@ -198,7 +198,7 @@ pronoun. For example, the non-it length of "unlocking it with" is 2.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::non_it_length</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">ActionNameNames::non_it_length</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP13">§13</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">ActionNameNames::non_it_length</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">ActionNameNames::non_it_length</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP15">§15</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</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">LOOP_THROUGH_WORDING</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">present_name</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_WORDING</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">present_name</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (!(</span><span class="function-syntax"><object-pronoun></span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::one_word</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="function-syntax"><object-pronoun></span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">))))</span>
|
||||||
|
@ -211,7 +211,7 @@ preposition can be abbreviated is under the author's control:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::it_optional</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">ActionNameNames::it_optional</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP21">§21</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">ActionNameNames::it_optional</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">ActionNameNames::it_optional</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP23_1_2">§23.1.2</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">it_optional</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">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">it_optional</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ preposition can be abbreviated is under the author's control:
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviable</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">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviable</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::abbreviable</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">ActionNameNames::abbreviable</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP21">§21</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">ActionNameNames::abbreviable</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">ActionNameNames::abbreviable</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP23_1_2">§23.1.2</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviable</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">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviable</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
|
@ -304,7 +304,7 @@ STV clauses; (2) get this right:
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" [Valid]"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" [Valid]"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Action: "</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="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">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#SP14" 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">else</span><span class="plain-syntax"> </span><a href="4-anl.html#SP16" 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">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><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><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">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>
|
||||||
|
@ -328,7 +328,7 @@ STV clauses; (2) get this right:
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><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="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">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#SP14" 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">else</span><span class="plain-syntax"> </span><a href="4-anl.html#SP16" 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">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><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><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">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>
|
||||||
|
@ -354,7 +354,7 @@ STV clauses; (2) get this right:
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_named</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::is_named</span></span>:<br/><a href="4-ap2.html#SP27">§27</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('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::is_named</span></span>:<br/><a href="4-ap2.html#SP27">§27</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP7" 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">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP9" 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>
|
<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>
|
||||||
<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">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>
|
||||||
|
@ -370,9 +370,9 @@ 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">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="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('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">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#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</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('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">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">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#SP9" 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">return</span><span class="plain-syntax"> </span><a href="4-anl.html#SP11" 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="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('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::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">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('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::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">ap</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -381,12 +381,12 @@ STV clauses; (2) get this right:
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::required_action</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">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::required_action</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="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::single_positive_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="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="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::single_positive_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="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">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::object_based</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::object_based</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-anl.html#SP6" class="function-link"><span class="function-syntax">ActionNameLists::nonempty</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="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><a href="4-anl.html#SP8" class="function-link"><span class="function-syntax">ActionNameLists::nonempty</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -953,7 +953,7 @@ box" makes no sense since only one is transitive).
|
||||||
<span class="Preform-function-syntax"><ap-common-core-inner-inner-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
|
<span class="Preform-function-syntax"><ap-common-core-inner-inner-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-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">Wordings::mismatched_brackets</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</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">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">Wordings::mismatched_brackets</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</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">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">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#SP20" 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-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#SP18" 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">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#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-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">text_of_pattern</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">;</span>
|
||||||
|
@ -1044,7 +1044,7 @@ here — a constant, a description, a table entry, a variable, and so on.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pap_failure_reason</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">pap_failure_reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</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">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">action_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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">action_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">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP7" 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">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP9" 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="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">item</span><span class="plain-syntax">-></span><span class="element-syntax">action_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">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="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">item</span><span class="plain-syntax">-></span><span class="element-syntax">action_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="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="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">valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1081,8 +1081,8 @@ away as they are recorded.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">preliminary_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP20" class="function-link"><span class="function-syntax">ActionNameLists::parse</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">tense</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="identifier-syntax">preliminary_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP18" class="function-link"><span class="function-syntax">ActionNameLists::parse</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">tense</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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">chief_an</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::get_best_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">preliminary_anl</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">chief_an</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP15" class="function-link"><span class="function-syntax">ActionNameLists::get_best_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">preliminary_anl</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">chief_an</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">chief_an</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">x</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">x</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">chief_an</span><span class="plain-syntax"> = </span><a href="4-ann.html#SP13" class="function-link"><span class="function-syntax">ActionNameNames::longest_nounless</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">tense</span><span class="plain-syntax">, &</span><span class="identifier-syntax">x</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">chief_an</span><span class="plain-syntax"> = </span><a href="4-ann.html#SP13" class="function-link"><span class="function-syntax">ActionNameNames::longest_nounless</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">tense</span><span class="plain-syntax">, &</span><span class="identifier-syntax">x</span><span class="plain-syntax">);</span>
|
||||||
|
@ -1122,7 +1122,7 @@ taking or dropping.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">try_list</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP20" class="function-link"><span class="function-syntax">ActionNameLists::parse</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">tense</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="identifier-syntax">try_list</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP18" class="function-link"><span class="function-syntax">ActionNameLists::parse</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">tense</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">try_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">Failed</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">try_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">Failed</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">try_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">try_list</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">"ANL from PAR(i):\n$L\n"</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"ANL from PAR(i):\n$L\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||||
|
@ -1156,14 +1156,14 @@ crucial word position except for the one matched.
|
||||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_2" class="named-paragraph-link"><span class="named-paragraph">Report to the debugging log on the action decomposition</span><span class="named-paragraph-number">26.5.2</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_2" class="named-paragraph-link"><span class="named-paragraph">Report to the debugging log on the action decomposition</span><span class="named-paragraph-number">26.5.2</span></a></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_3" class="named-paragraph-link"><span class="named-paragraph">Find how many different positions have each possible minimum count</span><span class="named-paragraph-number">26.5.3</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_3" class="named-paragraph-link"><span class="named-paragraph">Find how many different positions have each possible minimum count</span><span class="named-paragraph-number">26.5.3</span></a></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">first_position</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::first_position</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">first_position</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::first_position</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">int</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>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</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>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">trial_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">trial_ap</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="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="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">"Entry (%d):\n$8\n"</span><span class="plain-syntax">, </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">), </span><span class="identifier-syntax">entry</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">"Entry (%d):\n$8\n"</span><span class="plain-syntax">, </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">), </span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_4" class="named-paragraph-link"><span class="named-paragraph">Fill out the noun, second, room and nowhere fields of the AP as if this action were right</span><span class="named-paragraph-number">26.5.4</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_4" class="named-paragraph-link"><span class="named-paragraph">Fill out the noun, second, room and nowhere fields of the AP as if this action were right</span><span class="named-paragraph-number">26.5.4</span></a></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_5" class="named-paragraph-link"><span class="named-paragraph">Check the validity of this speculative AP</span><span class="named-paragraph-number">26.5.5</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_5" class="named-paragraph-link"><span class="named-paragraph">Check the validity of this speculative AP</span><span class="named-paragraph-number">26.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#SP10" 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="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#SP12" 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">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">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><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>
|
||||||
|
@ -1193,8 +1193,8 @@ par-count 0, so the minimum is 0.)
|
||||||
<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"> = -1;</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"> = -1;</span>
|
||||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_1_1" class="named-paragraph-link"><span class="named-paragraph">Find the position word of this particular action name</span><span class="named-paragraph-number">26.5.1.1</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap2.html#SP26_5_1_1" class="named-paragraph-link"><span class="named-paragraph">Find the position word of this particular action name</span><span class="named-paragraph-number">26.5.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">pos</span><span class="plain-syntax">] == </span><span class="constant-syntax">UNTHINKABLE_POSITION</span><span class="plain-syntax">) ||</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">pos</span><span class="plain-syntax">] == </span><span class="constant-syntax">UNTHINKABLE_POSITION</span><span class="plain-syntax">) ||</span>
|
||||||
<span class="plain-syntax"> (</span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) < </span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">pos</span><span class="plain-syntax">]))</span>
|
<span class="plain-syntax"> (</span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) < </span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">pos</span><span class="plain-syntax">]))</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">pos</span><span class="plain-syntax">] = </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::parc</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="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">pos</span><span class="plain-syntax">] = </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::parc</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>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap2.html#SP26_5">§26.5</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-ap2.html#SP26_5">§26.5</a>.</li></ul>
|
||||||
|
@ -1204,11 +1204,11 @@ par-count 0, so the minimum is 0.)
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">no_positions</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">no_positions</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><a href="4-anl.html#SP10" 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">position_at</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><a href="4-anl.html#SP12" 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">position_at</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">pos</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">pos</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">pos</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">pos</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">no_positions</span><span class="plain-syntax"> == </span><span class="constant-syntax">MAX_AP_POSITIONS</span><span class="plain-syntax">) </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">Failed</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">no_positions</span><span class="plain-syntax"> == </span><span class="constant-syntax">MAX_AP_POSITIONS</span><span class="plain-syntax">) </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">Failed</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">position_at</span><span class="plain-syntax">[</span><span class="identifier-syntax">no_positions</span><span class="plain-syntax">] = </span><a href="4-anl.html#SP10" 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="plain-syntax"> </span><span class="identifier-syntax">position_at</span><span class="plain-syntax">[</span><span class="identifier-syntax">no_positions</span><span class="plain-syntax">] = </span><a href="4-anl.html#SP12" 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="plain-syntax"> </span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">no_positions</span><span class="plain-syntax">] = </span><span class="constant-syntax">UNTHINKABLE_POSITION</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">no_positions</span><span class="plain-syntax">] = </span><span class="constant-syntax">UNTHINKABLE_POSITION</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">no_positions</span><span class="plain-syntax">++;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">no_positions</span><span class="plain-syntax">++;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
@ -1254,28 +1254,28 @@ description.
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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">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="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#SP10" 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="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP12" 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#SP8" 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#SP10" 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#SP10" 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#SP12" 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">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><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#SP28" 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#SP10" 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#SP28" 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#SP12" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">))) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">))) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-anl.html#SP8" 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">NULL</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-anl.html#SP10" 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">NULL</span><span class="plain-syntax">)</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">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#SP8" 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="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#SP10" 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#SP10" 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="function-syntax"><understanding-action-irregular-operand></span><span class="plain-syntax">(</span><a href="4-anl.html#SP12" 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">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#SP10" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">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#SP12" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-ap2.html#SP28" 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#SP10" 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#SP28" 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#SP12" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">)))</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP12" 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#SP28" 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#SP28" 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#SP10" class="function-link"><span class="function-syntax">ActionNameLists::in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">));</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap2.html#SP26_5">§26.5</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-ap2.html#SP26_5">§26.5</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP26_5_5" class="paragraph-anchor"></a><b>§26.5.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check the validity of this speculative AP</span><span class="named-paragraph-number">26.5.5</span></span><span class="comment-syntax"> =</span>
|
<p class="commentary firstcommentary"><a id="SP26_5_5" class="paragraph-anchor"></a><b>§26.5.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check the validity of this speculative AP</span><span class="named-paragraph-number">26.5.5</span></span><span class="comment-syntax"> =</span>
|
||||||
|
@ -1284,9 +1284,9 @@ description.
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">check_n</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">check_n</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">check_s</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">check_s</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP8" 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">NULL</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP10" 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">NULL</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">check_n</span><span class="plain-syntax"> = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><a href="4-anl.html#SP8" 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="identifier-syntax">check_n</span><span class="plain-syntax"> = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><a href="4-anl.html#SP10" 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="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#SP8" 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="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#SP10" 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="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="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="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>
|
||||||
|
@ -1307,34 +1307,34 @@ description.
|
||||||
<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">[2];</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">[2];</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">K</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">K</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ANL_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">next</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">LOOP_THROUGH_ANL_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">next</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#SP4" class="function-link"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><a href="4-anl.html#SP8" 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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-anl.html#SP4" class="function-link"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><a href="4-anl.html#SP10" 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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::same_word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry</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-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::same_word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry</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-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::same_word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">next</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-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::same_word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">next</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">K</span><span class="plain-syntax">[0] == </span><span class="identifier-syntax">NULL</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><a href="4-anl.html#SP8" 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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">[0] == </span><span class="identifier-syntax">NULL</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><a href="4-anl.html#SP10" 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="identifier-syntax">K</span><span class="plain-syntax">[0] = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><a href="4-anl.html#SP8" 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="identifier-syntax">K</span><span class="plain-syntax">[0] = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><a href="4-anl.html#SP10" 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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">[1] == </span><span class="identifier-syntax">NULL</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><a href="4-anl.html#SP8" 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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">[1] == </span><span class="identifier-syntax">NULL</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><a href="4-anl.html#SP10" 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="identifier-syntax">K</span><span class="plain-syntax">[1] = </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#SP8" 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="identifier-syntax">K</span><span class="plain-syntax">[1] = </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#SP10" 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="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="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">"Necessary kinds: %u, %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">K</span><span class="plain-syntax">[1]);</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">"Necessary kinds: %u, %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">K</span><span class="plain-syntax">[1]);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ANL_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">next</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">LOOP_THROUGH_ANL_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">next</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#SP4" class="function-link"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><a href="4-anl.html#SP8" 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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-anl.html#SP4" class="function-link"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><a href="4-anl.html#SP10" 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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">poor_choice</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">poor_choice</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">K</span><span class="plain-syntax">[0]) && (</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><a href="4-anl.html#SP8" 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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">[0]) && (</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><a href="4-anl.html#SP10" 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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><a href="4-anl.html#SP8" 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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><a href="4-anl.html#SP10" 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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">[0]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">poor_choice</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">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">[0]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">poor_choice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">[1]) && (</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><a href="4-anl.html#SP8" 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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">[1]) && (</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><a href="4-anl.html#SP10" 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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</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#SP8" 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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</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#SP10" 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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">[1]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">poor_choice</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">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">[1]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">poor_choice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">poor_choice</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">poor_choice</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#SP10" class="function-link"><span class="function-syntax">ActionNameLists::same_word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry</span><span class="plain-syntax">)) &&</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::same_word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry</span><span class="plain-syntax">)) &&</span>
|
||||||
<span class="plain-syntax"> (</span><a href="4-anl.html#SP4" class="function-link"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prev</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
<span class="plain-syntax"> (</span><a href="4-anl.html#SP4" class="function-link"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prev</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="plain-syntax"> ((</span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::same_word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">next</span><span class="plain-syntax">)) &&</span>
|
<span class="plain-syntax"> ((</span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::same_word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">next</span><span class="plain-syntax">)) &&</span>
|
||||||
<span class="plain-syntax"> (</span><a href="4-anl.html#SP4" class="function-link"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">next</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)))</span>
|
<span class="plain-syntax"> (</span><a href="4-anl.html#SP4" class="function-link"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">next</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)))</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-anl.html#SP4" 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>
|
<span class="plain-syntax"> </span><a href="4-anl.html#SP4" 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>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
@ -1369,23 +1369,23 @@ the case when the first action name in the list is <span class="extract"><span c
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kinds_observed_in_list</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kinds_observed_in_list</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kinds_observed_in_list</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kinds_observed_in_list</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">NULL</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="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">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP8" class="function-link"><span class="function-syntax">ActionNameLists::nap</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::nap</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::parc</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#SP12" class="function-link"><span class="function-syntax">ActionNameLists::parc</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="identifier-syntax">no_of_pars</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">immiscible</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">no_of_pars</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">immiscible</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">no_of_pars</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::parc</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="identifier-syntax">no_of_pars</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::parc</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="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">this</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP8" 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="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">this</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" 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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this</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::is_out_of_world</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">this</span><span class="plain-syntax">)) </span><span class="identifier-syntax">no_oow</span><span class="plain-syntax">++; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_iw</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::is_out_of_world</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">this</span><span class="plain-syntax">)) </span><span class="identifier-syntax">no_oow</span><span class="plain-syntax">++; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_iw</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#SP10" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) >= </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::parc</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">this</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">K</span><span class="plain-syntax"> = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">this</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">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kinds_observed_in_list</span><span class="plain-syntax">[0];</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kinds_observed_in_list</span><span class="plain-syntax">[0];</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">A</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">A</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">immiscible</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">immiscible</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">kinds_observed_in_list</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kinds_observed_in_list</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">K</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><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</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-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) >= </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</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><span class="identifier-syntax">this</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">K</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><span class="identifier-syntax">this</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">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kinds_observed_in_list</span><span class="plain-syntax">[1];</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kinds_observed_in_list</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">A</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">A</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</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>
|
||||||
|
@ -1397,10 +1397,10 @@ the case when the first action name in the list is <span class="extract"><span c
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">no_oow</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">no_iw</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="identifier-syntax">immiscible</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">no_oow</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">no_iw</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="identifier-syntax">immiscible</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">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="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">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP8" 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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP10" 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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">no_of_pars</span><span class="plain-syntax"> >= </span><span class="constant-syntax">1</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><a href="4-anl.html#SP8" 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">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">no_of_pars</span><span class="plain-syntax"> >= </span><span class="constant-syntax">1</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><a href="4-anl.html#SP10" 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">FALSE</span><span class="plain-syntax">))</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">immiscible</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">immiscible</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">no_of_pars</span><span class="plain-syntax"> >= </span><span class="constant-syntax">2</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><a href="4-anl.html#SP8" 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">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">no_of_pars</span><span class="plain-syntax"> >= </span><span class="constant-syntax">2</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><a href="4-anl.html#SP10" 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">FALSE</span><span class="plain-syntax">))</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">immiscible</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">immiscible</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>
|
||||||
|
|
||||||
|
@ -1552,7 +1552,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.4.1 - Action/How/What Happens"</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.4.1 - Action/How/What Happens"</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP8" class="function-link"><span class="function-syntax">ActionNameLists::compare_specificity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</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="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::compare_specificity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</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">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.5.1 - Action/When/Duration"</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.5.1 - Action/When/Duration"</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1613,7 +1613,7 @@ into action patterns in the noun or second noun position.
|
||||||
<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">spec1</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
<span class="plain-syntax"> (</span><span class="function-syntax"><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">spec1</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">spec1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</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-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::get_the_one_true_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="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-anl.html#SP14" class="function-link"><span class="function-syntax">ActionNameLists::get_the_one_true_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="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">EXPRESSIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling from action name list:\n$L\n"</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><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">EXPRESSIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling from action name list:\n$L\n"</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><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">flag_bits</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">flag_bits</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1879,7 +1879,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_late_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_late_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTKinds::emit_block_value_header</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">RTKinds::emit_block_value_header</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">6</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-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::get_the_one_true_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="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-anl.html#SP14" class="function-link"><span class="function-syntax">ActionNameLists::get_the_one_true_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="plain-syntax"> </span><span class="identifier-syntax">Emit::array_action_entry</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">Emit::array_action_entry</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">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="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="identifier-syntax">request_bits</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>
|
||||||
|
@ -2010,7 +2010,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">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_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><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>
|
<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#SP7" 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">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP9" 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">action_listed</span><span 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">action_listed</span><span class="plain-syntax">)) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_of_noun</span><span class="plain-syntax"> = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">-></span><span class="element-syntax">action_listed</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_of_noun</span><span class="plain-syntax"> = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">-></span><span class="element-syntax">action_listed</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kind_of_noun</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">kind_of_noun</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kind_of_noun</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">kind_of_noun</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
|
||||||
|
@ -2494,11 +2494,11 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><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="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><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="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="element-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">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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP6" class="function-link"><span class="function-syntax">ActionNameLists::length</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP8" class="function-link"><span class="function-syntax">ActionNameLists::length</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">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="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><span class="identifier-syntax">Emit::tree</span><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>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><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>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><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#SP7" 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">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP9" 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">L</span><span class="plain-syntax"> >= </span><span class="constant-syntax">2</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">L</span><span class="plain-syntax"> >= </span><span class="constant-syntax">2</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><a href="4-as.html#SP7" class="function-link"><span class="function-syntax">ActionSemantics::can_be_compiled_in_past_tense</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">-></span><span class="element-syntax">action_listed</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-as.html#SP7" class="function-link"><span class="function-syntax">ActionSemantics::can_be_compiled_in_past_tense</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">-></span><span class="element-syntax">action_listed</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">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="identifier-syntax">bad_form</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -185,7 +185,7 @@ preferred way to do that is to use activities for selecting missing parameters.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">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#SP16_2">§16.2</a>, <a href="4-anl.html#SP21">§21</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP26_5_6">§26.5.6</a>, <a href="4-ap2.html#SP26_6">§26.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#SP19_2">§19.2</a>, <a href="4-anl.html#SP23_1_3">§23.1.3</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP26_5_6">§26.5.6</a>, <a href="4-ap2.html#SP26_6">§26.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">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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
|
@ -21,6 +21,7 @@ function togglePopup(material_id) {
|
||||||
|
|
||||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
<body class="commentary-font">
|
<body class="commentary-font">
|
||||||
|
@ -106,7 +107,7 @@ this category if it matches one of the patterns.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_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="identifier-syntax">ADD_TO_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="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">NamedActionPatterns::by_name</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">NamedActionPatterns::by_name</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP19">§19</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="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">NamedActionPatterns::by_name</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">NamedActionPatterns::by_name</span></span>:<br/><a href="4-nap.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">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexicon::retrieve</span><span class="plain-syntax">(</span><span class="identifier-syntax">NAMED_AP_MC</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">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexicon::retrieve</span><span class="plain-syntax">(</span><span class="identifier-syntax">NAMED_AP_MC</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">p</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::to_named_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::to_named_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="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">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -122,12 +123,25 @@ this category if it matches one of the patterns.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">nap</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">nap</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>And here we test whether a given action name appears in a NAP, which it does
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>A Preform version of the parser-by-name:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||||
|
<span class="Preform-function-syntax"><named-action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
|
||||||
|
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">named_action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">nap</span><span class="Preform-plain-syntax"> = </span><a href="4-nap.html#SP2" class="function-link"><span class="Preform-function-syntax">NamedActionPatterns::by_name</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-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">nap</span><span class="Preform-plain-syntax">) {</span>
|
||||||
|
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">nap</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><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>
|
||||||
|
</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="SP4" class="paragraph-anchor"></a><b>§4. </b>And here we test whether a given action name appears in a NAP, which it does
|
||||||
if and only if it appears in one of the patterns in the list:
|
if and only if it appears in one of the patterns in the list:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">NamedActionPatterns::covers_action</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">NamedActionPatterns::covers_action</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP9">§9</a></span></button><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><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">NamedActionPatterns::covers_action</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">NamedActionPatterns::covers_action</span></span>:<br/>Action Name Lists - <a href="4-anl.html#SP11">§11</a></span></button><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><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">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">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="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="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>
|
||||||
|
|
|
@ -233,8 +233,11 @@ generated from the PHUD elsewhere.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">NamedActionPatterns::by_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</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">NamedActionPatterns::by_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</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">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">NotSingleAction</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">NotSingleAction</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">anyone</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">anyone</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">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionPatterns::list_of_actions_only</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">, &</span><span class="identifier-syntax">anyone</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-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">ActionPatterns::list_of_actions_only</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">, &</span><span class="identifier-syntax">anyone</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionNameLists::get_best_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">head</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">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Looking at '%W' (anyone flag %d):\n$L\n"</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax">, </span><span class="identifier-syntax">anyone</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">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionNameLists::get_best_action</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Best action is $l\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rls.html#SP24" class="function-link"><span class="function-syntax">Rules::set_marked_for_anyone</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">), </span><span class="identifier-syntax">anyone</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rls.html#SP24" class="function-link"><span class="function-syntax">Rules::set_marked_for_anyone</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">), </span><span class="identifier-syntax">anyone</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</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">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -1113,9 +1113,9 @@ allowing it to print comments on each apparent action name it sees.
|
||||||
<span class="plain-syntax"> </span><span class="function-syntax"><anl-diagnosis>(phud-></span><span class="element-syntax">rule_parameter</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="function-syntax"><anl-diagnosis>(phud-></span><span class="element-syntax">rule_parameter</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="function-syntax"><<r>></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="function-syntax"><<r>></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</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">N</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">avoids</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">positive</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-list>(phud-></span><span class="identifier-syntax">rule_parameter</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">avoids</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">ActionNameLists::parse</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">rule_parameter</span><span class="plain-syntax">, </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">, &</span><span class="identifier-syntax">positive</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">avoids</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">positive</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||||
<span class="plain-syntax"> </span><span class="string-syntax">" This looks like a list of actions to avoid: "</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="string-syntax">" This looks like a list of actions to avoid: "</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">else</span>
|
||||||
|
|
|
@ -9139,9 +9139,9 @@
|
||||||
|
|
||||||
<action-list> hits 958/2310 nti 27 constraint (none) extremes [1, infinity)
|
<action-list> hits 958/2310 nti 27 constraint (none) extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
doing something/anything other than <anl-excluded>
|
doing something/anything other than <excluded-list>
|
||||||
(hits 0/140) constraint DS = {27} extremes [5, infinity)
|
(hits 0/140) constraint DS = {27} extremes [5, infinity)
|
||||||
doing something/anything except <anl-excluded>
|
doing something/anything except <excluded-list>
|
||||||
(hits 0/155) constraint DS = {27} extremes [4, infinity)
|
(hits 0/155) constraint DS = {27} extremes [4, infinity)
|
||||||
doing something/anything to/with <anl-to-tail>
|
doing something/anything to/with <anl-to-tail>
|
||||||
(hits 0/155) constraint DS = {27} extremes [4, infinity)
|
(hits 0/155) constraint DS = {27} extremes [4, infinity)
|
||||||
|
@ -9152,14 +9152,14 @@
|
||||||
<anl>
|
<anl>
|
||||||
(hits 958/1155) (matched long text) constraint (none) extremes [1, infinity)
|
(hits 958/1155) (matched long text) constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<anl-excluded> nti 26 constraint (none) extremes [1, infinity)
|
<excluded-list> nti 26 constraint (none) extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
<anl> to/with {<anl-minimal-common-operand>}
|
<anl> to/with {<minimal-common-to-text>}
|
||||||
constraint DS = {26} extremes [3, infinity)
|
constraint DS = {26} extremes [3, infinity)
|
||||||
<anl>
|
<anl>
|
||||||
constraint (none) extremes [1, infinity)
|
constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<anl-minimal-common-operand> nti 25 constraint (none) extremes [1, infinity)
|
<minimal-common-to-text> nti 25 constraint (none) extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
_,/or {...}
|
_,/or {...}
|
||||||
constraint DS = {25} extremes [2, infinity)
|
constraint DS = {25} extremes [2, infinity)
|
||||||
|
@ -9170,7 +9170,7 @@
|
||||||
|
|
||||||
<anl-to-tail> hits 326/652 nti 30 constraint (none) extremes [1, infinity)
|
<anl-to-tail> hits 326/652 nti 30 constraint (none) extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
<anl-operand> <anl-in-tail>
|
<anl-operand> <text-of-in-clause>
|
||||||
(hits 0/120) constraint DS = {23} extremes [3, infinity)
|
(hits 0/120) constraint DS = {23} extremes [3, infinity)
|
||||||
<anl-operand>
|
<anl-operand>
|
||||||
(hits 326/326) (matched long text) constraint (none) extremes [1, infinity)
|
(hits 326/326) (matched long text) constraint (none) extremes [1, infinity)
|
||||||
|
@ -9180,7 +9180,7 @@
|
||||||
{...}
|
{...}
|
||||||
(hits 326/326) (matched long text) constraint (none) extremes [1, infinity)
|
(hits 326/326) (matched long text) constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<anl-in-tail> hits 12/5510 nti 23 constraint DS = {23} extremes [2, infinity)
|
<text-of-in-clause> hits 12/5510 nti 23 constraint DS = {23} extremes [2, infinity)
|
||||||
English:
|
English:
|
||||||
fixed in place {***}
|
fixed in place {***}
|
||||||
(hits 0/1101) constraint DS = {23} extremes [3, infinity)
|
(hits 0/1101) constraint DS = {23} extremes [3, infinity)
|
||||||
|
@ -9207,14 +9207,12 @@
|
||||||
English:
|
English:
|
||||||
<named-action-pattern>
|
<named-action-pattern>
|
||||||
(hits 0/1155) constraint (none) extremes [1, infinity)
|
(hits 0/1155) constraint (none) extremes [1, infinity)
|
||||||
<named-action-pattern> <anl-in-tail>
|
<named-action-pattern> <text-of-in-clause>
|
||||||
(hits 0/559) constraint DS = {23} extremes [3, infinity)
|
(hits 0/559) constraint DS = {23} extremes [3, infinity)
|
||||||
<anl-entry-with-action>
|
<anl-entry-with-action>
|
||||||
(hits 958/1155) (matched long text) constraint (none) extremes [1, infinity)
|
(hits 958/1155) (matched long text) constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<named-action-pattern> internal hits 0/2330 nti 8 constraint (none) extremes [1, infinity)
|
<anl-entry-with-action> internal hits 958/2310 nti 8 constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<anl-entry-with-action> internal hits 958/2310 nti 9 constraint (none) extremes [1, infinity)
|
|
||||||
|
|
||||||
<action-pattern> hits 556/21224 nti 28 constraint (none) extremes [1, infinity)
|
<action-pattern> hits 556/21224 nti 28 constraint (none) extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
|
@ -9303,18 +9301,18 @@
|
||||||
we have not <action-pattern-past-core>
|
we have not <action-pattern-past-core>
|
||||||
(hits 0/945) constraint DS = {12} extremes [4, infinity)
|
(hits 0/945) constraint DS = {12} extremes [4, infinity)
|
||||||
|
|
||||||
<action-pattern-core-actor> hits 150/23102 nti 10 constraint (none) extremes [1, infinity)
|
<action-pattern-core-actor> hits 150/23102 nti 9 constraint (none) extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
<action-pattern-core>
|
<action-pattern-core>
|
||||||
(hits 85/11551) (matched long text) constraint (none) extremes [1, infinity)
|
(hits 85/11551) (matched long text) constraint (none) extremes [1, infinity)
|
||||||
<actor-description> <action-pattern-core>
|
<actor-description> <action-pattern-core>
|
||||||
(hits 65/6518) (matched long text) constraint (none) extremes [2, infinity)
|
(hits 65/6518) (matched long text) constraint (none) extremes [2, infinity)
|
||||||
|
|
||||||
<actor-description> internal hits 76/13036 nti 11 constraint (none) extremes [1, infinity)
|
<actor-description> internal hits 76/13036 nti 10 constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<action-pattern-core> internal hits 584/24122 nti 12 constraint (none) extremes [1, infinity)
|
<action-pattern-core> internal hits 584/24122 nti 11 constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<action-pattern-past-core> internal nti 13 constraint (none) extremes [1, infinity)
|
<action-pattern-past-core> internal nti 12 constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<action-pronominal> hits 0/1390 nti 29 constraint CS = {29} extremes [2, 2]
|
<action-pronominal> hits 0/1390 nti 29 constraint CS = {29} extremes [2, 2]
|
||||||
English:
|
English:
|
||||||
|
@ -9332,7 +9330,7 @@
|
||||||
{...} when/while {...}
|
{...} when/while {...}
|
||||||
(hits 0/53) constraint DS = {6} extremes [3, infinity)
|
(hits 0/53) constraint DS = {6} extremes [3, infinity)
|
||||||
|
|
||||||
<condition-in-ap> internal hits 19/38 nti 14 constraint (none) extremes [1, infinity)
|
<condition-in-ap> internal hits 19/38 nti 13 constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<ap-common-core-inner> hits 584/1406 nti 31 constraint (none) extremes [1, infinity)
|
<ap-common-core-inner> hits 584/1406 nti 31 constraint (none) extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
|
@ -9348,7 +9346,7 @@
|
||||||
<ap-common-core-inner-inner-inner>
|
<ap-common-core-inner-inner-inner>
|
||||||
(hits 584/703) (matched long text) constraint (none) extremes [1, infinity)
|
(hits 584/703) (matched long text) constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<ap-common-core-inner-inner-inner> internal hits 584/1406 nti 15 constraint (none) extremes [1, infinity)
|
<ap-common-core-inner-inner-inner> internal hits 584/1406 nti 14 constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<action-operand> hits 194/444 nti 7 constraint (none) extremes [1, infinity)
|
<action-operand> hits 194/444 nti 7 constraint (none) extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
|
@ -9373,7 +9371,7 @@
|
||||||
it
|
it
|
||||||
(hits 1/1) (matched: 'it') constraint CS = {9} extremes [1, 1]
|
(hits 1/1) (matched: 'it') constraint CS = {9} extremes [1, 1]
|
||||||
|
|
||||||
<action-parameter> hits 276/1144 nti 16 constraint (none) extremes [1, infinity)
|
<action-parameter> hits 276/1144 nti 15 constraint (none) extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
^<if-nonconstant-action-context> <s-local-variable>
|
^<if-nonconstant-action-context> <s-local-variable>
|
||||||
(hits 0/572) constraint (none) extremes [1, infinity)
|
(hits 0/572) constraint (none) extremes [1, infinity)
|
||||||
|
@ -9386,7 +9384,9 @@
|
||||||
<s-type-expression-or-value>
|
<s-type-expression-or-value>
|
||||||
(hits 209/505) (matched long text) constraint (none) extremes [1, infinity)
|
(hits 209/505) (matched long text) constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<if-nonconstant-action-context> internal hits 1144/2288 nti 17 constraint (none) extremes [0, 0]
|
<if-nonconstant-action-context> internal hits 1144/2288 nti 16 constraint (none) extremes [0, 0]
|
||||||
|
|
||||||
|
<named-action-pattern> internal hits 0/2330 nti 17 constraint (none) extremes [1, infinity)
|
||||||
|
|
||||||
<notable-parsing-variables> hits 21/186 nti 10 constraint DS = {10} extremes [1, infinity)
|
<notable-parsing-variables> hits 21/186 nti 10 constraint DS = {10} extremes [1, infinity)
|
||||||
English:
|
English:
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
100.0% in inform7 run
|
100.0% in inform7 run
|
||||||
67.0% in compilation to Inter
|
67.2% in compilation to Inter
|
||||||
25.8% in //Phrases::Manager::compile_first_block//
|
26.1% in //Phrases::Manager::compile_first_block//
|
||||||
8.5% in //Phrases::Manager::compile_as_needed//
|
8.4% in //Phrases::Manager::compile_as_needed//
|
||||||
7.0% in //Strings::compile_responses//
|
6.9% in //Strings::compile_responses//
|
||||||
6.0% in //InferenceSubjects::emit_all//
|
6.2% in //InferenceSubjects::emit_all//
|
||||||
4.2% in //MajorNodes::pre_pass//
|
4.2% in //MajorNodes::pre_pass//
|
||||||
3.3% in //MajorNodes::pass_1//
|
3.3% in //MajorNodes::pass_1//
|
||||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||||
1.8% in //Phrases::Manager::rulebooks_array//
|
1.8% in //Phrases::Manager::rulebooks_array//
|
||||||
1.1% in //RTVerbs::ConjugateVerb//
|
1.1% in //RTVerbs::ConjugateVerb//
|
||||||
0.7% in //Phrases::Manager::traverse//
|
0.9% in //Phrases::Manager::traverse//
|
||||||
0.5% in //Phrases::Manager::parse_rule_parameters//
|
0.5% in //Phrases::Manager::parse_rule_parameters//
|
||||||
0.5% in //World::stage_V//
|
0.5% in //World::stage_V//
|
||||||
0.3% in //MajorNodes::pass_2//
|
0.3% in //MajorNodes::pass_2//
|
||||||
|
@ -19,11 +19,11 @@
|
||||||
0.1% in //RTKinds::compile_data_type_support_routines//
|
0.1% in //RTKinds::compile_data_type_support_routines//
|
||||||
0.1% in //Task::make_built_in_kind_constructors//
|
0.1% in //Task::make_built_in_kind_constructors//
|
||||||
0.1% in //World::stages_II_and_III//
|
0.1% in //World::stages_II_and_III//
|
||||||
3.3% not specifically accounted for
|
3.1% not specifically accounted for
|
||||||
30.6% in running Inter pipeline
|
30.3% in running Inter pipeline
|
||||||
9.9% in step preparation
|
9.9% in step preparation
|
||||||
9.7% in inter step 2/12: link
|
9.7% in inter step 2/12: link
|
||||||
7.2% in inter step 12/12: generate inform6 -> auto.inf
|
7.1% in inter step 12/12: generate inform6 -> auto.inf
|
||||||
0.3% in inter step 9/12: make-identifiers-unique
|
0.3% in inter step 9/12: make-identifiers-unique
|
||||||
0.1% in inter step 10/12: reconcile-verbs
|
0.1% in inter step 10/12: reconcile-verbs
|
||||||
0.1% in inter step 11/12: eliminate-redundant-labels
|
0.1% in inter step 11/12: eliminate-redundant-labels
|
||||||
|
@ -31,6 +31,6 @@
|
||||||
0.1% in inter step 6/12: assimilate
|
0.1% in inter step 6/12: assimilate
|
||||||
0.1% in inter step 7/12: resolve-external-symbols
|
0.1% in inter step 7/12: resolve-external-symbols
|
||||||
0.1% in inter step 8/12: inspect-plugs
|
0.1% in inter step 8/12: inspect-plugs
|
||||||
2.2% not specifically accounted for
|
2.0% not specifically accounted for
|
||||||
2.0% in supervisor
|
2.0% in supervisor
|
||||||
0.2% not specifically accounted for
|
0.4% not specifically accounted for
|
||||||
|
|
5
inform7/Tests/Groups/anl.testgroup
Normal file
5
inform7/Tests/Groups/anl.testgroup
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
C11PastIntransitiveActions
|
||||||
|
OverlappingActionNames
|
||||||
|
C12RuleSorting1
|
||||||
|
C12RuleSorting2
|
||||||
|
NAPs
|
|
@ -56,15 +56,17 @@ typedef struct anl_entry {
|
||||||
struct anl_item item;
|
struct anl_item item;
|
||||||
struct anl_parsing_data parsing_data;
|
struct anl_parsing_data parsing_data;
|
||||||
int marked_for_deletion;
|
int marked_for_deletion;
|
||||||
struct anl_entry *next_link; /* next in this ANL list */
|
struct anl_entry *next_entry; /* next in this ANL list */
|
||||||
} anl_entry;
|
} anl_entry;
|
||||||
|
|
||||||
anl_entry *ActionNameLists::new_entry_at(int at) {
|
anl_entry *ActionNameLists::new_entry_at(wording W) {
|
||||||
anl_entry *new_anl = CREATE(anl_entry);
|
anl_entry *entry = CREATE(anl_entry);
|
||||||
new_anl->item = ActionNameLists::new_item();
|
entry->item = ActionNameLists::new_item();
|
||||||
new_anl->parsing_data = ActionNameLists::new_parsing_data(at);
|
int at = -1;
|
||||||
new_anl->marked_for_deletion = FALSE;
|
if (Wordings::nonempty(W)) at = Wordings::first_wn(W);
|
||||||
return new_anl;
|
entry->parsing_data = ActionNameLists::new_parsing_data(at);
|
||||||
|
entry->marked_for_deletion = FALSE;
|
||||||
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ The model here is that the list can be reduced in size by marking entries
|
@ The model here is that the list can be reduced in size by marking entries
|
||||||
|
@ -90,10 +92,10 @@ entries which fail to change the word position.
|
||||||
void ActionNameLists::remove_entries_marked_for_deletion(action_name_list *list) {
|
void ActionNameLists::remove_entries_marked_for_deletion(action_name_list *list) {
|
||||||
if (list) {
|
if (list) {
|
||||||
int pos = -1;
|
int pos = -1;
|
||||||
for (anl_entry *entry = list->entries, *prev = NULL; entry; entry = entry->next_link) {
|
for (anl_entry *entry = list->entries, *prev = NULL; entry; entry = entry->next_entry) {
|
||||||
if ((entry->marked_for_deletion) || (pos == entry->parsing_data.word_position)) {
|
if ((entry->marked_for_deletion) || (pos == entry->parsing_data.word_position)) {
|
||||||
if (prev == NULL) list->entries = entry->next_link;
|
if (prev == NULL) list->entries = entry->next_entry;
|
||||||
else prev->next_link = entry->next_link;
|
else prev->next_entry = entry->next_entry;
|
||||||
} else {
|
} else {
|
||||||
prev = entry;
|
prev = entry;
|
||||||
pos = entry->parsing_data.word_position;
|
pos = entry->parsing_data.word_position;
|
||||||
|
@ -102,16 +104,77 @@ void ActionNameLists::remove_entries_marked_for_deletion(action_name_list *list)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ The list must be kept in a strict order, as can be seen:
|
||||||
|
|
||||||
|
=
|
||||||
|
void ActionNameLists::join_to(anl_entry *earlier, anl_entry *later) {
|
||||||
|
if (ActionNameLists::precedes(later, earlier)) internal_error("misordering");
|
||||||
|
earlier->next_entry = later;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ Which uses the following function:
|
||||||
|
|
||||||
|
(*) Results in later word positions come first, and if that doesn't decide it
|
||||||
|
(*) NAPs come before actions, and if that doesn't decide it
|
||||||
|
(*) Older NAPs come before younger ones, and if that doesn't decide it
|
||||||
|
(*) Less abbreviated results come first, and if that doesn't decide it
|
||||||
|
(*) Older action names come before younger, and if that doesn't decide it
|
||||||
|
(*) Later-discovered results come before earlier ones.
|
||||||
|
|
||||||
|
Here, "older" and "younger" mean how long ago the relevant //named_action_pattern//
|
||||||
|
or //action_name// objects were created, and since this happens in source text
|
||||||
|
order, we are really saying "closer to the top of the source text" when we
|
||||||
|
say "older".
|
||||||
|
|
||||||
|
Note that this function is transitive ($p(x, y)$ and $p(y, z)$ implies $p(x, z)$)
|
||||||
|
and antisymmetric ($p(x, y)$ implies that $p(y, x)$ is false). Strictly speaking
|
||||||
|
it is not trichotomous, but if neither $p(x, y)$ nor $p(y, x)$ then $x$ and $y$
|
||||||
|
have identical item data; and in that case it doesn't matter which way round they
|
||||||
|
are in the list.
|
||||||
|
|
||||||
|
=
|
||||||
|
int ActionNameLists::precedes(anl_entry *e1, anl_entry *e2) {
|
||||||
|
if (e1 == NULL) return FALSE;
|
||||||
|
if (e2 == NULL) return TRUE;
|
||||||
|
|
||||||
|
int c = e1->parsing_data.word_position -
|
||||||
|
e2->parsing_data.word_position;
|
||||||
|
if (c > 0) return TRUE; if (c < 0) return FALSE;
|
||||||
|
|
||||||
|
c = ((e1->item.nap_listed)?(e1->item.nap_listed->allocation_id):10000000) -
|
||||||
|
((e2->item.nap_listed)?(e2->item.nap_listed->allocation_id):10000000);
|
||||||
|
if (c > 0) return TRUE; if (c < 0) return FALSE;
|
||||||
|
|
||||||
|
c = e1->parsing_data.abbreviation_level -
|
||||||
|
e2->parsing_data.abbreviation_level;
|
||||||
|
if (c < 0) return TRUE; if (c > 0) return FALSE;
|
||||||
|
|
||||||
|
c = ((e1->item.action_listed)?(e1->item.action_listed->allocation_id):10000000) -
|
||||||
|
((e2->item.action_listed)?(e2->item.action_listed->allocation_id):10000000);
|
||||||
|
if (c > 0) return TRUE; if (c < 0) return FALSE;
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
anl_entry *ActionNameLists::join_entry(anl_entry *further, anl_entry *tail) {
|
||||||
|
if (further == NULL) return tail;
|
||||||
|
if (tail == NULL) return further;
|
||||||
|
anl_entry *entry = tail;
|
||||||
|
while (entry->next_entry != NULL) entry = entry->next_entry;
|
||||||
|
ActionNameLists::join_to(entry, further);
|
||||||
|
return tail;
|
||||||
|
}
|
||||||
|
|
||||||
@ When not pruning the list, these macros are useful for working through it:
|
@ When not pruning the list, these macros are useful for working through it:
|
||||||
|
|
||||||
@d LOOP_THROUGH_ANL(var, list)
|
@d LOOP_THROUGH_ANL(var, list)
|
||||||
for (anl_entry *var = (list)?(list->entries):NULL; var; var = var->next_link)
|
for (anl_entry *var = (list)?(list->entries):NULL; var; var = var->next_entry)
|
||||||
|
|
||||||
@d LOOP_THROUGH_ANL_WITH_PREV(var, prev_var, next_var, list)
|
@d LOOP_THROUGH_ANL_WITH_PREV(var, prev_var, next_var, list)
|
||||||
for (anl_entry *var = (list)?(list->entries):NULL,
|
for (anl_entry *var = (list)?(list->entries):NULL,
|
||||||
*prev_var = NULL, *next_var = (var)?(var->next_link):NULL;
|
*prev_var = NULL, *next_var = (var)?(var->next_entry):NULL;
|
||||||
var;
|
var;
|
||||||
prev_var = var, var = next_var, next_var = (next_var)?(next_var->next_link):NULL)
|
prev_var = var, var = next_var, next_var = (next_var)?(next_var->next_entry):NULL)
|
||||||
|
|
||||||
=
|
=
|
||||||
int ActionNameLists::length(action_name_list *list) {
|
int ActionNameLists::length(action_name_list *list) {
|
||||||
|
@ -125,7 +188,10 @@ int ActionNameLists::nonempty(action_name_list *list) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ The //anl_item// material is the actual content we are trying to get at:
|
@ The //anl_item// material is the actual content we are trying to get at.
|
||||||
|
Like life, items are a mixture of naps and actions. At most one of these
|
||||||
|
fields is non-|NULL|. If they are both |NULL|, this represents "doing
|
||||||
|
anything" -- a completely unrestricted action.
|
||||||
|
|
||||||
=
|
=
|
||||||
typedef struct anl_item {
|
typedef struct anl_item {
|
||||||
|
@ -140,6 +206,11 @@ anl_item ActionNameLists::new_item(void) {
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ActionNameLists::clear_item_data(anl_entry *entry, action_name *an) {
|
||||||
|
entry->item.action_listed = an;
|
||||||
|
entry->item.nap_listed = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
anl_item *ActionNameLists::first_item(action_name_list *list) {
|
anl_item *ActionNameLists::first_item(action_name_list *list) {
|
||||||
if ((list) && (list->entries)) return &(list->entries->item);
|
if ((list) && (list->entries)) return &(list->entries->item);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -226,11 +297,44 @@ anl_parsing_data ActionNameLists::new_parsing_data(int at) {
|
||||||
return parsing_data;
|
return parsing_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ActionNameLists::clear_parsing_data(anl_entry *entry, wording W) {
|
||||||
|
entry->parsing_data.parc = 0;
|
||||||
|
int at = -1;
|
||||||
|
if (Wordings::nonempty(W)) at = Wordings::first_wn(W);
|
||||||
|
entry->parsing_data.word_position = at;
|
||||||
|
entry->parsing_data.in_clause = EMPTY_WORDING;
|
||||||
|
entry->parsing_data.abbreviation_level = 0;
|
||||||
|
}
|
||||||
|
|
||||||
int ActionNameLists::parc(anl_entry *entry) {
|
int ActionNameLists::parc(anl_entry *entry) {
|
||||||
if (entry) return entry->parsing_data.parc;
|
if (entry) return entry->parsing_data.parc;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wording ActionNameLists::par(anl_entry *entry, int i) {
|
||||||
|
if ((entry) && (entry->parsing_data.parc > i)) return entry->parsing_data.parameter[i];
|
||||||
|
return EMPTY_WORDING;
|
||||||
|
}
|
||||||
|
|
||||||
|
wording ActionNameLists::in_clause(anl_entry *entry) {
|
||||||
|
if (entry) return entry->parsing_data.in_clause;
|
||||||
|
return EMPTY_WORDING;
|
||||||
|
}
|
||||||
|
|
||||||
|
anl_entry *ActionNameLists::add_parameter(anl_entry *entry, wording W) {
|
||||||
|
if (entry == NULL) internal_error("no entry");
|
||||||
|
if (entry->parsing_data.parc >= 2) internal_error("too many ANL parameters");
|
||||||
|
entry->parsing_data.parameter[entry->parsing_data.parc] = W;
|
||||||
|
entry->parsing_data.parc++;
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
anl_entry *ActionNameLists::add_in_clause(anl_entry *entry, wording W) {
|
||||||
|
if (entry == NULL) internal_error("no entry");
|
||||||
|
entry->parsing_data.in_clause = W;
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
|
||||||
int ActionNameLists::first_position(action_name_list *list) {
|
int ActionNameLists::first_position(action_name_list *list) {
|
||||||
if (list) return ActionNameLists::word_position(list->entries);
|
if (list) return ActionNameLists::word_position(list->entries);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -247,16 +351,6 @@ int ActionNameLists::same_word_position(anl_entry *entry, anl_entry *Y) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
wording ActionNameLists::par(anl_entry *entry, int i) {
|
|
||||||
if ((entry) && (entry->parsing_data.parc > i)) return entry->parsing_data.parameter[i];
|
|
||||||
return EMPTY_WORDING;
|
|
||||||
}
|
|
||||||
|
|
||||||
wording ActionNameLists::in_clause(anl_entry *entry) {
|
|
||||||
if (entry) return entry->parsing_data.in_clause;
|
|
||||||
return EMPTY_WORDING;
|
|
||||||
}
|
|
||||||
|
|
||||||
@h Single and best actions.
|
@h Single and best actions.
|
||||||
This tests whether the list gives a single positive action:
|
This tests whether the list gives a single positive action:
|
||||||
|
|
||||||
|
@ -292,7 +386,6 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
action_name *ActionNameLists::get_best_action(action_name_list *list) {
|
action_name *ActionNameLists::get_best_action(action_name_list *list) {
|
||||||
int posn = -1, best_score = -1;
|
int posn = -1, best_score = -1;
|
||||||
action_name *best = NULL;
|
action_name *best = NULL;
|
||||||
LOGIF(RULE_ATTACHMENTS, "Getting single action from:\n$L\n", list);
|
|
||||||
if (ActionNameLists::positive(list) == FALSE) return NULL;
|
if (ActionNameLists::positive(list) == FALSE) return NULL;
|
||||||
LOOP_THROUGH_ANL(entry, list)
|
LOOP_THROUGH_ANL(entry, list)
|
||||||
if (entry->item.action_listed) {
|
if (entry->item.action_listed) {
|
||||||
|
@ -309,7 +402,6 @@ action_name *ActionNameLists::get_best_action(action_name_list *list) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOGIF(RULE_ATTACHMENTS, "Posn %d AN $l\n", posn, best);
|
|
||||||
return best;
|
return best;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -385,40 +477,64 @@ void ActionNameLists::log_entry_briefly(anl_entry *entry) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@h Parsing text to an ANL.
|
@h Parsing text to an ANL.
|
||||||
|
Action name lists arise only for parsing text, and only from the function below;
|
||||||
|
this might match, for example, "doing something other than waiting", or
|
||||||
|
"dropping the box". We make no effort to understand the words which are not
|
||||||
|
part of the action: "dropping the box" is just "dropping (two words)" here.
|
||||||
|
|
||||||
=
|
Note that it works in either |IS_TENSE| or |HASBEEN_TENSE|, and that |sense|
|
||||||
anl_entry *anl_being_parsed = NULL;
|
is set to |FALSE| (if it is supplied) when the text had a negative sense --
|
||||||
|
something other than something -- or |TRUE| for a positive one.
|
||||||
|
|
||||||
@ The following handles action name lists, such as:
|
The test group |:anl| is helpful in catching errors here.
|
||||||
|
|
||||||
>> doing something other than waiting
|
@ =
|
||||||
>> taking or dropping the box
|
int anl_parsing_tense = IS_TENSE;
|
||||||
|
action_name_list *ActionNameLists::parse(wording W, int tense, int *sense) {
|
||||||
|
if (Wordings::mismatched_brackets(W)) return NULL;
|
||||||
|
int t = anl_parsing_tense;
|
||||||
|
anl_parsing_tense = tense;
|
||||||
|
int r = <action-list>(W);
|
||||||
|
anl_parsing_tense = t;
|
||||||
|
if (r) {
|
||||||
|
if (sense) *sense = <<r>>;
|
||||||
|
return <<rp>>;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
At this stage in parsing, we are identifying possible actions, and
|
@ The outer parts of the syntax are handled by a Preform grammar.
|
||||||
what their possible operands are, but we aren't trying to parse those
|
|
||||||
operands.
|
|
||||||
|
|
||||||
=
|
=
|
||||||
<action-list> ::=
|
<action-list> ::=
|
||||||
doing something/anything other than <anl-excluded> | ==> { FALSE, RP[1] }
|
doing something/anything other than <excluded-list> | ==> { FALSE, RP[1] }
|
||||||
doing something/anything except <anl-excluded> | ==> { FALSE, RP[1] }
|
doing something/anything except <excluded-list> | ==> { FALSE, RP[1] }
|
||||||
doing something/anything to/with <anl-to-tail> | ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) }
|
doing something/anything to/with <anl-to-tail> | ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) }
|
||||||
doing something/anything | ==> @<Construct ANL for anything@>
|
doing something/anything | ==> @<Construct ANL for anything@>
|
||||||
doing something/anything ... | ==> { fail }
|
doing something/anything ... | ==> { fail }
|
||||||
<anl> ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) }
|
<anl> ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_POSITIVE) }
|
||||||
|
|
||||||
<anl-excluded> ::=
|
<excluded-list> ::=
|
||||||
<anl> to/with {<anl-minimal-common-operand>} | ==> @<Add to-clause to excluded ANL@>;
|
<anl> to/with {<minimal-common-to-text>} | ==> @<Add to-clause to excluded ANL@>;
|
||||||
<anl> ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_NEGATED_LISTWISE) }
|
<anl> ==> { TRUE, ActionNameLists::new_list(RP[1], ANL_NEGATED_LISTWISE) }
|
||||||
|
|
||||||
<anl-minimal-common-operand> ::=
|
<minimal-common-to-text> ::=
|
||||||
_,/or ... | ==> { fail }
|
_,/or ... | ==> { fail }
|
||||||
... to/with ... | ==> { fail }
|
... to/with ... | ==> { fail }
|
||||||
...
|
...
|
||||||
|
|
||||||
@<Construct ANL for anything@> =
|
@<Construct ANL for anything@> =
|
||||||
anl_entry *anl = ActionNameLists::new_entry_at(Wordings::first_wn(W));
|
anl_entry *entry = ActionNameLists::new_entry_at(W);
|
||||||
==> { TRUE, ActionNameLists::new_list(anl, ANL_POSITIVE) };
|
==> { TRUE, ActionNameLists::new_list(entry, ANL_POSITIVE) };
|
||||||
|
|
||||||
|
@<Add to-clause to excluded ANL@> =
|
||||||
|
anl_entry *entry = RP[1];
|
||||||
|
if ((entry == NULL) ||
|
||||||
|
(ActionSemantics::can_have_noun(entry->item.action_listed) == FALSE)) {
|
||||||
|
==> { fail production };
|
||||||
|
}
|
||||||
|
ActionNameLists::add_parameter(entry, GET_RW(<excluded-list>, 1));
|
||||||
|
==> { FALSE, ActionNameLists::new_list(entry, ANL_NEGATED_ITEMWISE) };
|
||||||
|
|
||||||
@ The trickiest form is:
|
@ The trickiest form is:
|
||||||
|
|
||||||
|
@ -427,46 +543,56 @@ operands.
|
||||||
where no explicit action occurs at all, but we have to parse the rest of
|
where no explicit action occurs at all, but we have to parse the rest of
|
||||||
the text as if it does, including an "in" clause.
|
the text as if it does, including an "in" clause.
|
||||||
|
|
||||||
So the following finds the first "in" within its range of words, except that
|
So <text-of-in-clause> finds the first "in" within its range of words, except
|
||||||
it throws out an "in" that we consider bogus for our own syntactic purposes:
|
that it throws out an "in" that we consider bogus for our own syntactic purposes:
|
||||||
for instance, we don't want to count the "in" from "fixed in place".
|
for instance, we don't want to count the "in" from "fixed in place".
|
||||||
|
|
||||||
=
|
=
|
||||||
<anl-to-tail> ::=
|
<anl-to-tail> ::=
|
||||||
<anl-operand> <anl-in-tail> | ==> @<Augment ANL with in clause@>
|
<anl-operand> <text-of-in-clause> | ==> @<Augment ANL with in clause@>
|
||||||
<anl-operand> ==> { pass 1 }
|
<anl-operand> ==> { pass 1 }
|
||||||
|
|
||||||
<anl-operand> ::=
|
<anl-operand> ::=
|
||||||
... ==> @<Construct ANL for anything applied@>
|
... ==> { TRUE, ActionNameLists::entry_for_to_tail(W) };
|
||||||
|
|
||||||
<anl-in-tail> ::=
|
<text-of-in-clause> ::=
|
||||||
fixed in place *** | ==> { advance Wordings::delta(WR[1], W) }
|
fixed in place *** | ==> { advance Wordings::delta(WR[1], W) }
|
||||||
is/are/was/were/been/listed in *** | ==> { advance Wordings::delta(WR[1], W) }
|
is/are/was/were/been/listed in *** | ==> { advance Wordings::delta(WR[1], W) }
|
||||||
in ... ==> { TRUE, - }
|
in ... ==> { TRUE, - }
|
||||||
|
|
||||||
@<Augment ANL with in clause@> =
|
@<Augment ANL with in clause@> =
|
||||||
anl_entry *anl = RP[1];
|
==> { TRUE, ActionNameLists::add_in_clause(RP[1], GET_RW(<text-of-in-clause>, 1)) }
|
||||||
anl->parsing_data.in_clause = GET_RW(<anl-in-tail>, 1);
|
|
||||||
|
|
||||||
@<Construct ANL for anything applied@> =
|
@ This matches a comma/or-separated list of items:
|
||||||
anl_entry *new_anl;
|
|
||||||
if ((!preform_lookahead_mode) && (anl_being_parsed)) new_anl = anl_being_parsed;
|
|
||||||
else new_anl = ActionNameLists::new_entry_at(Wordings::first_wn(W));
|
|
||||||
new_anl->parsing_data.parameter[new_anl->parsing_data.parc] = W;
|
|
||||||
new_anl->parsing_data.parc++;
|
|
||||||
==> { TRUE, new_anl };
|
|
||||||
|
|
||||||
@ Now for the basic list of actions being included:
|
|
||||||
|
|
||||||
=
|
=
|
||||||
<anl> ::=
|
<anl> ::=
|
||||||
<anl-entry> <anl-tail> | ==> @<Join parsed ANLs@>
|
<anl-entry> <anl-tail> | ==> { 0, ActionNameLists::join_entry(RP[1], RP[2]) }
|
||||||
<anl-entry> ==> { pass 1 }
|
<anl-entry> ==> { pass 1 }
|
||||||
|
|
||||||
<anl-tail> ::=
|
<anl-tail> ::=
|
||||||
, _or <anl> | ==> { pass 1 }
|
, _or <anl> | ==> { pass 1 }
|
||||||
_,/or <anl> ==> { pass 1 }
|
_,/or <anl> ==> { pass 1 }
|
||||||
|
|
||||||
|
@ Items can be named action patterns, so let's get those out of the way first:
|
||||||
|
|
||||||
|
=
|
||||||
|
<anl-entry> ::=
|
||||||
|
<named-action-pattern> | ==> @<Make a NAP entry@>
|
||||||
|
<named-action-pattern> <text-of-in-clause> | ==> @<Make a NAP entry with an in clause@>
|
||||||
|
<anl-entry-with-action> ==> { pass 1 }
|
||||||
|
|
||||||
|
@<Make a NAP entry@> =
|
||||||
|
anl_entry *entry = ActionNameLists::new_entry_at(W);
|
||||||
|
entry->item.nap_listed = RP[1];
|
||||||
|
==> { 0, entry };
|
||||||
|
|
||||||
|
@<Make a NAP entry with an in clause@> =
|
||||||
|
anl_entry *entry = ActionNameLists::new_entry_at(W);
|
||||||
|
entry->item.nap_listed = RP[1];
|
||||||
|
ActionNameLists::add_in_clause(entry, GET_RW(<text-of-in-clause>, 1));
|
||||||
|
==> { 0, entry };
|
||||||
|
|
||||||
@ Which reduces us to an internal nonterminal for an entry in this list.
|
@ Which reduces us to an internal nonterminal for an entry in this list.
|
||||||
It actually produces multiple matches: for example,
|
It actually produces multiple matches: for example,
|
||||||
|
|
||||||
|
@ -478,151 +604,116 @@ operand "inventory". (It's unlikely that the last will succeed in the
|
||||||
end, but it's syntactically valid.)
|
end, but it's syntactically valid.)
|
||||||
|
|
||||||
=
|
=
|
||||||
<anl-entry> ::=
|
|
||||||
<named-action-pattern> | ==> @<Make an action pattern from named behaviour@>
|
|
||||||
<named-action-pattern> <anl-in-tail> | ==> @<Make an action pattern from named behaviour plus in@>
|
|
||||||
<anl-entry-with-action> ==> { pass 1 }
|
|
||||||
|
|
||||||
<named-action-pattern> internal {
|
|
||||||
named_action_pattern *nap = NamedActionPatterns::by_name(W);
|
|
||||||
if (nap) {
|
|
||||||
==> { -, nap }; return TRUE;
|
|
||||||
}
|
|
||||||
==> { fail nonterminal };
|
|
||||||
}
|
|
||||||
|
|
||||||
<anl-entry-with-action> internal {
|
<anl-entry-with-action> internal {
|
||||||
anl_entry *anl = ActionNameLists::anl_parse_internal(W);
|
anl_entry *results = NULL;
|
||||||
if (anl) {
|
@<Parse the wording into a list of results@>;
|
||||||
==> { -, anl }; return TRUE;
|
if (results) {
|
||||||
|
==> { -, results }; return TRUE;
|
||||||
}
|
}
|
||||||
==> { fail nonterminal };
|
==> { fail nonterminal };
|
||||||
}
|
}
|
||||||
|
|
||||||
@<Make an action pattern from named behaviour@> =
|
@<Parse the wording into a list of results@> =
|
||||||
anl_entry *new_anl = ActionNameLists::new_entry_at(Wordings::first_wn(W));
|
|
||||||
new_anl->item.nap_listed = RP[1];
|
|
||||||
==> { 0, new_anl };
|
|
||||||
|
|
||||||
@<Make an action pattern from named behaviour plus in@> =
|
|
||||||
anl_entry *new_anl = ActionNameLists::new_entry_at(Wordings::first_wn(W));
|
|
||||||
new_anl->item.nap_listed = RP[1];
|
|
||||||
new_anl->parsing_data.in_clause = GET_RW(<anl-in-tail>, 1);
|
|
||||||
==> { 0, new_anl };
|
|
||||||
|
|
||||||
@<Add to-clause to excluded ANL@> =
|
|
||||||
anl_entry *anl = RP[1];
|
|
||||||
if ((anl == NULL) ||
|
|
||||||
(ActionSemantics::can_have_noun(anl->item.action_listed) == FALSE)) {
|
|
||||||
==> { fail production };
|
|
||||||
}
|
|
||||||
anl->parsing_data.parameter[anl->parsing_data.parc] = GET_RW(<anl-excluded>, 1);
|
|
||||||
anl->parsing_data.parc++;
|
|
||||||
action_name_list *list = ActionNameLists::new_list(anl, ANL_NEGATED_ITEMWISE);
|
|
||||||
==> { FALSE, list };
|
|
||||||
|
|
||||||
@<Join parsed ANLs@> =
|
|
||||||
anl_entry *join;
|
|
||||||
anl_entry *left_atom = RP[1];
|
|
||||||
anl_entry *right_tail = RP[2];
|
|
||||||
if (left_atom == NULL) { join = right_tail; }
|
|
||||||
else if (right_tail == NULL) { join = left_atom; }
|
|
||||||
else {
|
|
||||||
anl_entry *new_anl = right_tail;
|
|
||||||
while (new_anl->next_link != NULL) new_anl = new_anl->next_link;
|
|
||||||
new_anl->next_link = left_atom;
|
|
||||||
join = right_tail;
|
|
||||||
}
|
|
||||||
==> { 0, join };
|
|
||||||
|
|
||||||
@ =
|
|
||||||
int anl_parsing_tense = IS_TENSE;
|
|
||||||
action_name_list *ActionNameLists::parse(wording W, int tense) {
|
|
||||||
if (Wordings::mismatched_brackets(W)) return NULL;
|
|
||||||
int t = anl_parsing_tense;
|
|
||||||
anl_parsing_tense = tense;
|
|
||||||
int r = <action-list>(W);
|
|
||||||
anl_parsing_tense = t;
|
|
||||||
if (r) return <<rp>>;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
@ =
|
|
||||||
anl_entry *ActionNameLists::anl_parse_internal(wording W) {
|
|
||||||
LOGIF(ACTION_PATTERN_PARSING, "Parsing ANL from %W (tense %d)\n", W, anl_parsing_tense);
|
LOGIF(ACTION_PATTERN_PARSING, "Parsing ANL from %W (tense %d)\n", W, anl_parsing_tense);
|
||||||
|
anl_entry *trial_entry = ActionNameLists::new_entry_at(EMPTY_WORDING);
|
||||||
int tense = anl_parsing_tense;
|
|
||||||
anl_entry *anl_list = NULL, *new_anl = NULL;
|
|
||||||
|
|
||||||
action_name *an;
|
action_name *an;
|
||||||
new_anl = ActionNameLists::new_entry_at(-1);
|
|
||||||
|
|
||||||
LOOP_OVER(an, action_name) {
|
LOOP_OVER(an, action_name) {
|
||||||
int x_ended = FALSE;
|
@<Ready the trial entry for another test@>;
|
||||||
int fc = 0;
|
wording RW = EMPTY_WORDING;
|
||||||
int it_optional = ActionNameNames::it_optional(an);
|
@<Make the trial entry fit this action, if possible, leaving remaining text in RW@>;
|
||||||
int abbreviable = ActionNameNames::abbreviable(an);
|
@<Consider the trial entry for inclusion in the results list@>;
|
||||||
wording XW = ActionNameNames::tensed(an, tense);
|
NoMatch: ;
|
||||||
new_anl->item.action_listed = an;
|
|
||||||
new_anl->parsing_data.parc = 0;
|
|
||||||
new_anl->parsing_data.word_position = Wordings::first_wn(W);
|
|
||||||
new_anl->parsing_data.in_clause = EMPTY_WORDING;
|
|
||||||
int w_m = Wordings::first_wn(W), x_m = Wordings::first_wn(XW);
|
|
||||||
while ((w_m <= Wordings::last_wn(W)) && (x_m <= Wordings::last_wn(XW))) {
|
|
||||||
if (Lexer::word(x_m++) != Lexer::word(w_m++)) {
|
|
||||||
fc=1; goto DontInclude;
|
|
||||||
}
|
|
||||||
if (x_m > Wordings::last_wn(XW)) { x_ended = TRUE; break; }
|
|
||||||
if (<object-pronoun>(Wordings::one_word(x_m))) {
|
|
||||||
if (w_m > Wordings::last_wn(W)) x_ended = TRUE; else {
|
|
||||||
int j = -1, k;
|
|
||||||
for (k=(it_optional)?(w_m):(w_m+1); k<=Wordings::last_wn(W); k++)
|
|
||||||
if (Lexer::word(k) == Lexer::word(x_m+1)) { j = k; break; }
|
|
||||||
if (j<0) { fc=2; goto DontInclude; }
|
|
||||||
if (j-1 >= w_m) {
|
|
||||||
new_anl->parsing_data.parameter[new_anl->parsing_data.parc] = Wordings::new(w_m, j-1);
|
|
||||||
new_anl->parsing_data.parc++;
|
|
||||||
} else {
|
|
||||||
new_anl->parsing_data.parameter[new_anl->parsing_data.parc] = EMPTY_WORDING;
|
|
||||||
new_anl->parsing_data.parc++;
|
|
||||||
}
|
|
||||||
w_m = j; x_m++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (x_ended) break;
|
|
||||||
}
|
|
||||||
if ((w_m > Wordings::last_wn(W)) && (x_ended == FALSE)) {
|
|
||||||
if (abbreviable) x_ended = TRUE;
|
|
||||||
else { fc=3; goto DontInclude; }
|
|
||||||
}
|
|
||||||
if (x_m <= Wordings::last_wn(XW)) new_anl->parsing_data.abbreviation_level = Wordings::last_wn(XW)-x_m+1;
|
|
||||||
|
|
||||||
int inc = FALSE;
|
|
||||||
if (w_m > Wordings::last_wn(W)) inc = TRUE;
|
|
||||||
else if (<anl-in-tail>(Wordings::from(W, w_m))) {
|
|
||||||
new_anl->parsing_data.in_clause = GET_RW(<anl-in-tail>, 1);
|
|
||||||
inc = TRUE;
|
|
||||||
} else if (ActionSemantics::can_have_noun(an)) {
|
|
||||||
anl_being_parsed = new_anl;
|
|
||||||
if (<anl-to-tail>(Wordings::from(W, w_m))) {
|
|
||||||
inc = TRUE;
|
|
||||||
}
|
|
||||||
anl_being_parsed = NULL;
|
|
||||||
}
|
|
||||||
new_anl->next_link = NULL;
|
|
||||||
if (inc) {
|
|
||||||
if (anl_list == NULL) anl_list = new_anl;
|
|
||||||
else {
|
|
||||||
anl_entry *pos = anl_list, *prev = NULL;
|
|
||||||
while ((pos) && (pos->parsing_data.abbreviation_level < new_anl->parsing_data.abbreviation_level))
|
|
||||||
prev = pos, pos = pos->next_link;
|
|
||||||
if (prev) prev->next_link = new_anl; else anl_list = new_anl;
|
|
||||||
new_anl->next_link = pos;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
new_anl = ActionNameLists::new_entry_at(-1);
|
|
||||||
DontInclude: ;
|
|
||||||
}
|
}
|
||||||
LOGIF(ACTION_PATTERN_PARSING, "Parsing ANL from %W resulted in:\n$8\n", W, anl_list);
|
LOGIF(ACTION_PATTERN_PARSING, "Parsing ANL from %W resulted in:\n$8\n", W, results);
|
||||||
return anl_list;
|
|
||||||
|
@<Ready the trial entry for another test@> =
|
||||||
|
trial_entry->next_entry = NULL;
|
||||||
|
ActionNameLists::clear_item_data(trial_entry, an);
|
||||||
|
ActionNameLists::clear_parsing_data(trial_entry, W);
|
||||||
|
|
||||||
|
@ Here |XW| will be the wording of the action name, say "removing it from";
|
||||||
|
we try to fit |W| to this, say "removing a heavy thing from something in the
|
||||||
|
Dining Room"; and if we cannot, we run away to the label |NoMatch|, which is
|
||||||
|
inelegant, but there's no elegant way to break out of nested loops in C.
|
||||||
|
|
||||||
|
@<Make the trial entry fit this action, if possible, leaving remaining text in RW@> =
|
||||||
|
int x_ended = FALSE;
|
||||||
|
int it_optional = ActionNameNames::it_optional(an);
|
||||||
|
int abbreviable = ActionNameNames::abbreviable(an);
|
||||||
|
wording XW = ActionNameNames::tensed(an, anl_parsing_tense);
|
||||||
|
int w_m = Wordings::first_wn(W), x_m = Wordings::first_wn(XW);
|
||||||
|
while ((w_m <= Wordings::last_wn(W)) && (x_m <= Wordings::last_wn(XW))) {
|
||||||
|
if (Lexer::word(x_m++) != Lexer::word(w_m++)) goto NoMatch;
|
||||||
|
if (x_m > Wordings::last_wn(XW)) { x_ended = TRUE; break; }
|
||||||
|
if (<object-pronoun>(Wordings::one_word(x_m))) {
|
||||||
|
if (w_m > Wordings::last_wn(W)) x_ended = TRUE; else {
|
||||||
|
int j = -1, k;
|
||||||
|
for (k=(it_optional)?(w_m):(w_m+1); k<=Wordings::last_wn(W); k++)
|
||||||
|
if (Lexer::word(k) == Lexer::word(x_m+1)) { j = k; break; }
|
||||||
|
if (j<0) goto NoMatch;
|
||||||
|
if (j-1 >= w_m)
|
||||||
|
ActionNameLists::add_parameter(trial_entry, Wordings::new(w_m, j-1));
|
||||||
|
else
|
||||||
|
ActionNameLists::add_parameter(trial_entry, EMPTY_WORDING);
|
||||||
|
w_m = j; x_m++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (x_ended) break;
|
||||||
|
}
|
||||||
|
if ((w_m > Wordings::last_wn(W)) && (x_ended == FALSE)) {
|
||||||
|
if (abbreviable) x_ended = TRUE; else goto NoMatch;
|
||||||
|
}
|
||||||
|
if (x_m <= Wordings::last_wn(XW))
|
||||||
|
trial_entry->parsing_data.abbreviation_level = Wordings::last_wn(XW)-x_m+1;
|
||||||
|
RW = Wordings::from(W, w_m);
|
||||||
|
|
||||||
|
@<Consider the trial entry for inclusion in the results list@> =
|
||||||
|
if (Wordings::empty(RW)) {
|
||||||
|
@<Include the trial entry@>;
|
||||||
|
} else if (<text-of-in-clause>(RW)) {
|
||||||
|
ActionNameLists::add_in_clause(trial_entry, GET_RW(<text-of-in-clause>, 1));
|
||||||
|
@<Include the trial entry@>;
|
||||||
|
} else if ((ActionSemantics::can_have_noun(an)) &&
|
||||||
|
(ActionNameLists::parse_to_tail(trial_entry, RW))) {
|
||||||
|
@<Include the trial entry@>;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ As an aside, the following code runs a specially adapted form of <anl-to-tail>:
|
||||||
|
not one which parses any differently, just one which uses the trial entry and not
|
||||||
|
newly-created ones (which would be expensive on memory).
|
||||||
|
|
||||||
|
=
|
||||||
|
anl_entry *to_tail_entry_being_parsed = NULL;
|
||||||
|
anl_entry *ActionNameLists::entry_for_to_tail(wording W) {
|
||||||
|
anl_entry *entry;
|
||||||
|
if ((!preform_lookahead_mode) && (to_tail_entry_being_parsed))
|
||||||
|
entry = to_tail_entry_being_parsed;
|
||||||
|
else entry = ActionNameLists::new_entry_at(W);
|
||||||
|
ActionNameLists::add_parameter(entry, W);
|
||||||
|
return entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ActionNameLists::parse_to_tail(anl_entry *entry, wording W) {
|
||||||
|
int result = FALSE;
|
||||||
|
to_tail_entry_being_parsed = entry;
|
||||||
|
if (<anl-to-tail>(W)) result = TRUE;
|
||||||
|
to_tail_entry_being_parsed = NULL;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ So this is the happy ending. We don't copy the trial entry; we insertion-sort
|
||||||
|
the structure itself into the results list, and make a fresh structure to be
|
||||||
|
the trial entry for future trials.
|
||||||
|
|
||||||
|
@<Include the trial entry@> =
|
||||||
|
if (results == NULL) {
|
||||||
|
results = trial_entry;
|
||||||
|
} else {
|
||||||
|
anl_entry *pos = results, *prev = NULL;
|
||||||
|
while ((pos) && (ActionNameLists::precedes(pos, trial_entry)))
|
||||||
|
prev = pos, pos = pos->next_entry;
|
||||||
|
if (prev) ActionNameLists::join_to(prev, trial_entry); else results = trial_entry;
|
||||||
|
ActionNameLists::join_to(trial_entry, pos);
|
||||||
|
}
|
||||||
|
trial_entry = ActionNameLists::new_entry_at(EMPTY_WORDING);
|
||||||
|
|
|
@ -801,7 +801,7 @@ box" makes no sense since only one is transitive).
|
||||||
<ap-common-core-inner-inner-inner> internal {
|
<ap-common-core-inner-inner-inner> internal {
|
||||||
if (Wordings::mismatched_brackets(W)) { ==> { fail nonterminal }; }
|
if (Wordings::mismatched_brackets(W)) { ==> { fail nonterminal }; }
|
||||||
if (scanning_anl_only_mode) {
|
if (scanning_anl_only_mode) {
|
||||||
action_name_list *list = ActionNameLists::parse(W, prevailing_ap_tense);
|
action_name_list *list = ActionNameLists::parse(W, prevailing_ap_tense, NULL);
|
||||||
if (list == NULL) { ==> { fail nonterminal }; }
|
if (list == NULL) { ==> { fail nonterminal }; }
|
||||||
action_pattern ap = ActionPatterns::new(); ap.valid = TRUE;
|
action_pattern ap = ActionPatterns::new(); ap.valid = TRUE;
|
||||||
ap.text_of_pattern = W;
|
ap.text_of_pattern = W;
|
||||||
|
@ -911,7 +911,7 @@ action_pattern ActionPatterns::parse_action_pattern_dash(wording W) {
|
||||||
away as they are recorded.
|
away as they are recorded.
|
||||||
|
|
||||||
@<PAR - (f) Parse Special Going Clauses@> =
|
@<PAR - (f) Parse Special Going Clauses@> =
|
||||||
action_name_list *preliminary_anl = ActionNameLists::parse(W, tense);
|
action_name_list *preliminary_anl = ActionNameLists::parse(W, tense, NULL);
|
||||||
action_name *chief_an = ActionNameLists::get_best_action(preliminary_anl);
|
action_name *chief_an = ActionNameLists::get_best_action(preliminary_anl);
|
||||||
if (chief_an == NULL) {
|
if (chief_an == NULL) {
|
||||||
int x;
|
int x;
|
||||||
|
@ -947,7 +947,7 @@ e.g., from "taking or dropping something", that it will be
|
||||||
taking or dropping.
|
taking or dropping.
|
||||||
|
|
||||||
@<PAR - (i) Parse Initial Action Name List@> =
|
@<PAR - (i) Parse Initial Action Name List@> =
|
||||||
action_name_list *try_list = ActionNameLists::parse(W, tense);
|
action_name_list *try_list = ActionNameLists::parse(W, tense, NULL);
|
||||||
if (try_list == NULL) goto Failed;
|
if (try_list == NULL) goto Failed;
|
||||||
list = try_list;
|
list = try_list;
|
||||||
LOGIF(ACTION_PATTERN_PARSING, "ANL from PAR(i):\n$L\n", list);
|
LOGIF(ACTION_PATTERN_PARSING, "ANL from PAR(i):\n$L\n", list);
|
||||||
|
|
|
@ -49,6 +49,17 @@ named_action_pattern *NamedActionPatterns::new(wording W) {
|
||||||
return nap;
|
return nap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ A Preform version of the parser-by-name:
|
||||||
|
|
||||||
|
=
|
||||||
|
<named-action-pattern> internal {
|
||||||
|
named_action_pattern *nap = NamedActionPatterns::by_name(W);
|
||||||
|
if (nap) {
|
||||||
|
==> { -, nap }; return TRUE;
|
||||||
|
}
|
||||||
|
==> { fail nonterminal };
|
||||||
|
}
|
||||||
|
|
||||||
@ And here we test whether a given action name appears in a NAP, which it does
|
@ And here we test whether a given action name appears in a NAP, which it does
|
||||||
if and only if it appears in one of the patterns in the list:
|
if and only if it appears in one of the patterns in the list:
|
||||||
|
|
||||||
|
|
|
@ -135,8 +135,11 @@ void Rules::Bookings::place(ph_usage_data *phud, booking *br) {
|
||||||
if (NamedActionPatterns::by_name(Wordings::from(PW, i)))
|
if (NamedActionPatterns::by_name(Wordings::from(PW, i)))
|
||||||
goto NotSingleAction;
|
goto NotSingleAction;
|
||||||
int anyone = FALSE;
|
int anyone = FALSE;
|
||||||
action_name_list *head = ActionPatterns::list_of_actions_only(PW, &anyone);
|
action_name_list *list = ActionPatterns::list_of_actions_only(PW, &anyone);
|
||||||
an = ActionNameLists::get_best_action(head);
|
LOGIF(RULE_ATTACHMENTS, "Looking at '%W' (anyone flag %d):\n$L\n",
|
||||||
|
PW, anyone, list);
|
||||||
|
an = ActionNameLists::get_best_action(list);
|
||||||
|
LOGIF(RULE_ATTACHMENTS, "Best action is $l\n", an);
|
||||||
Rules::set_marked_for_anyone(Rules::Bookings::get_rule(br), anyone);
|
Rules::set_marked_for_anyone(Rules::Bookings::get_rule(br), anyone);
|
||||||
} else {
|
} else {
|
||||||
an = NULL;
|
an = NULL;
|
||||||
|
|
|
@ -879,9 +879,9 @@ allowing it to print comments on each apparent action name it sees.
|
||||||
<anl-diagnosis>(phud->rule_parameter);
|
<anl-diagnosis>(phud->rule_parameter);
|
||||||
int N = <<r>>;
|
int N = <<r>>;
|
||||||
if (N > 1) {
|
if (N > 1) {
|
||||||
int avoids = FALSE;
|
int positive = TRUE;
|
||||||
if ((<action-list>(phud->rule_parameter)) && (<<r>> == FALSE)) avoids = TRUE;
|
ActionNameLists::parse(phud->rule_parameter, IS_TENSE, &positive);
|
||||||
if (avoids)
|
if (positive == FALSE)
|
||||||
Problems::issue_problem_segment(
|
Problems::issue_problem_segment(
|
||||||
" This looks like a list of actions to avoid: ");
|
" This looks like a list of actions to avoid: ");
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue