mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 00:24:22 +03:00
Cautiously sidling around anl_link
This commit is contained in:
parent
2a2c7f015e
commit
c1841fa031
|
@ -1,6 +1,6 @@
|
||||||
# Inform 7
|
# Inform 7
|
||||||
|
|
||||||
v10.1.0-alpha.1+6R36 'Krypton' (27 February 2021)
|
v10.1.0-alpha.1+6R37 'Krypton' (28 February 2021)
|
||||||
|
|
||||||
## About Inform 7
|
## About Inform 7
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
Prerelease: alpha.1
|
Prerelease: alpha.1
|
||||||
Build Date: 27 February 2021
|
Build Date: 28 February 2021
|
||||||
Build Number: 6R36
|
Build Number: 6R37
|
||||||
|
|
|
@ -335,7 +335,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">scene_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">scene_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">slash_gpr_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">slash_gpr_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">spatial_data_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">spatial_data_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">action_name_list_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">anl_link_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">action_pattern_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">action_pattern_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">anl_head_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">anl_head_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">ap_optional_clause_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">ap_optional_clause_CLASS</span>
|
||||||
|
@ -369,7 +369,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">slash_gpr</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">slash_gpr</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_data</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_data</span><span class="plain-syntax">)</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_name_list</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl_link</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl_head</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl_head</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap_optional_clause</span><span class="plain-syntax">, </span><span class="constant-syntax">400</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap_optional_clause</span><span class="plain-syntax">, </span><span class="constant-syntax">400</span><span class="plain-syntax">)</span>
|
||||||
|
|
|
@ -87,7 +87,7 @@ function togglePopup(material_id) {
|
||||||
<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">anl_head</span><span class="plain-syntax"> *, </span><a href="4-anl.html#SP2" 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_head</span><span class="plain-syntax"> *, </span><a href="4-anl.html#SP2" 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#SP2" class="function-link"><span class="function-syntax">ActionNameLists::log_anl</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *, </span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::log_anl_link</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>
|
||||||
|
@ -134,7 +134,7 @@ 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">'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#SP2" 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#SP2" 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#SP2" class="function-link"><span class="function-syntax">ActionNameLists::log_anl</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#SP2" class="function-link"><span class="function-syntax">ActionNameLists::log_anl_link</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>
|
||||||
|
|
|
@ -93,36 +93,53 @@ MathJax = {
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> {</span>
|
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">anl_head</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">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">body</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_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">body</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_specified</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">anl_head</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">anl_head</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::new_head</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_head</span></span>:<br/><a href="4-anl.html#SP8">§8</a><br/>Action Patterns - <a href="4-ap2.html#SP25_1">§25.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">anl</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::new_head</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_head</span></span>:<br/><a href="4-anl.html#SP3">§3</a>, <a href="4-anl.html#SP3_1">§3.1</a>, <a href="4-anl.html#SP3_2">§3.2</a><br/>Action Patterns - <a href="4-ap2.html#SP25_1">§25.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">negate_pattern</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="identifier-syntax">body</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="identifier-syntax">body</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="identifier-syntax">anyone_specified</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">negate_pattern</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"cannot"</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">negate_pattern</span><span class="plain-syntax"> = </span><span class="identifier-syntax">negate_pattern</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">head</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">head</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> {</span>
|
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</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_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">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</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_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">delete_this_link</span><span class="plain-syntax">; </span><span class="comment-syntax"> used temporarily during parsing</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">delete_this_link</span><span class="plain-syntax">; </span><span class="comment-syntax"> used temporarily during parsing</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">word_position</span><span class="plain-syntax">; </span><span class="comment-syntax"> and some values used temporarily during parsing</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">word_position</span><span class="plain-syntax">; </span><span class="comment-syntax"> and some values used temporarily during parsing</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">negate_pattern</span><span class="plain-syntax">; </span><span class="comment-syntax"> parity of the entire list which this heads</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">negate_pattern</span><span class="plain-syntax">; </span><span class="comment-syntax"> parity of the entire list which this heads</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parc</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">parc</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">parameter</span><span class="plain-syntax">[2];</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">parameter</span><span class="plain-syntax">[2];</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">in_clause</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">in_clause</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">anyone_specified</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">anl_link</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">typedef</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="reserved-syntax">typedef</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="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">action_listed</span><span class="plain-syntax">; </span><span class="comment-syntax"> the action in this ANL list entry</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">action_listed</span><span class="plain-syntax">; </span><span class="comment-syntax"> the action in this ANL list entry</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">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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">; </span><span class="comment-syntax"> parity of just this individual item</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">; </span><span class="comment-syntax"> parity of just this individual item</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::first_item</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::first_item</span></span>:<br/><a href="4-anl.html#SP9">§9</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP33">§33</a>, <a href="4-ap2.html#SP34">§34</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</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">body</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">body</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::length</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::length</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP34">§34</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</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">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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">++;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure anl_head is accessed in 4/ap2 and here.</li><li>The structure action_name_list is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 5/tfg, 5/gl and here.</li><li>The structure anl_item is accessed in 4/ap2 and here.</li></ul>
|
<ul class="endnotetexts"><li>The structure anl_head is accessed in 4/ap2 and here.</li><li>The structure anl_link is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 5/tfg, 5/gl and here.</li><li>The structure anl_item is accessed in 4/ap2 and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The action name list is the part of an action pattern identifying
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The action name list is the part of an action pattern identifying
|
||||||
which actions are allowed: "taking, dropping or examining" for
|
which actions are allowed: "taking, dropping or examining" for
|
||||||
example. The following routine extracts this from a potentially longer
|
example. The following routine extracts this from a potentially longer
|
||||||
|
@ -130,8 +147,8 @@ text (e.g. "taking, dropping or examining a door").
|
||||||
</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_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::anl_new</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::anl_new</span></span>:<br/><a href="4-anl.html#SP3_1">§3.1</a>, <a href="4-anl.html#SP4_2">§4.2</a>, <a href="4-anl.html#SP6_1">§6.1</a>, <a href="4-anl.html#SP6_2">§6.2</a>, <a href="4-anl.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::new_link</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::new_link</span></span>:<br/><a href="4-anl.html#SP3_1">§3.1</a>, <a href="4-anl.html#SP4_2">§4.2</a>, <a href="4-anl.html#SP6_1">§6.1</a>, <a href="4-anl.html#SP6_2">§6.2</a>, <a href="4-anl.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</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">action_name_list</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</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_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">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">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">NULL</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">NULL</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">NULL</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">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">parc</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
@ -140,17 +157,16 @@ text (e.g. "taking, dropping or examining a door").
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</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">new_anl</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">new_anl</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">new_anl</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="identifier-syntax">new_anl</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="identifier-syntax">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">anyone_specified</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">delete_this_link</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">delete_this_link</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">new_anl</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="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('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">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">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</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('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">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">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</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">anl</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">head</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</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_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">head</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</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#SP2" class="function-link"><span class="function-syntax">ActionNameLists::log_anl</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</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::log_anl_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</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_anl</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::log_anl</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">anl</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_anl_link</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log_anl_link</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_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">++) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">next</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">"ANL entry %s(%d@%d): %s "</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">"ANL entry %s(%d@%d): %s "</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">delete_this_link</span><span class="plain-syntax">)?</span><span class="string-syntax">"(to be deleted) "</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">delete_this_link</span><span class="plain-syntax">)?</span><span class="string-syntax">"(to be deleted) "</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">,</span>
|
||||||
|
@ -167,12 +183,12 @@ text (e.g. "taking, dropping or examining a door").
|
||||||
<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('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">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">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</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('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">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">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</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">anl</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">head</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</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_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">head</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">anl</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-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">anl</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-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>
|
||||||
<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="element-syntax">negate_pattern</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"NOT[ "</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"NOT[ "</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">a</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">a</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">a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">a</span><span class="plain-syntax">; </span><span class="identifier-syntax">a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">a</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">a</span><span class="plain-syntax">; </span><span class="identifier-syntax">a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">a</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">a</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">a</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">a</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> == -1) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"not-"</span><span 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="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> == -1) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"not-"</span><span class="plain-syntax">);</span>
|
||||||
|
@ -188,7 +204,7 @@ text (e.g. "taking, dropping or examining a door").
|
||||||
<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="function-syntax">ActionNameLists::get_singleton_action</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">ActionNameLists::get_singleton_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP28">§28</a>, <a href="4-ap2.html#SP32">§32</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::get_singleton_action</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::get_singleton_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP28">§28</a>, <a href="4-ap2.html#SP32">§32</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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">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="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="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Supposed singleton ANL is empty"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Supposed singleton ANL is empty"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">"Supposed singleton ANL is empty"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">"Supposed singleton ANL is empty"</span><span class="plain-syntax">);</span>
|
||||||
|
@ -197,7 +213,7 @@ text (e.g. "taking, dropping or examining a door").
|
||||||
<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>
|
||||||
|
|
||||||
<span class="reserved-syntax">action_name_list</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="reserved-syntax">anl_link</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>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The following handles action name lists, such as:
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The following handles action name lists, such as:
|
||||||
</p>
|
</p>
|
||||||
|
@ -219,14 +235,14 @@ operands.
|
||||||
<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"><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"><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"><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">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, 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_head(RP[1], FALSE) }</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#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Construct ANL for anything</span><span class="named-paragraph-number">3.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#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Construct ANL for anything</span><span class="named-paragraph-number">3.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, RP[1] }</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_head(RP[1], FALSE) }</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"><anl-excluded></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#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Add to-clause to excluded ANL</span><span class="named-paragraph-number">3.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">{<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#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Add to-clause to excluded ANL</span><span class="named-paragraph-number">3.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::flip_anl_parity(RP[1], FALSE) }</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_head(RP[1], TRUE) }</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"><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-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>
|
||||||
|
@ -238,9 +254,9 @@ operands.
|
||||||
</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">anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::anl_new</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::new_link</span></a><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">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">anl</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">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">anl</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_head</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) };</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP3">§3</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP3">§3</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>The trickiest form is:
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>The trickiest form is:
|
||||||
|
@ -277,7 +293,7 @@ for instance, we don't want to count the "in" from "fixed in place".
|
||||||
</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">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">anl_link</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">anl</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">anl</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#SP4">§4</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP4">§4</a>.</li></ul>
|
||||||
|
@ -285,10 +301,10 @@ for instance, we don't want to count the "in" from "fixed in place".
|
||||||
</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">new_anl</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</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">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="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><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::anl_new</span></a><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#SP2" class="function-link"><span class="function-syntax">ActionNameLists::new_link</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">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">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="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_anl</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">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">parameter</span><span class="plain-syntax">[</span><span class="identifier-syntax">new_anl</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>
|
||||||
|
@ -338,7 +354,7 @@ end, but it's syntactically valid.)
|
||||||
<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">action_name_list</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#SP9" 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_link</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#SP9" 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">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="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="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-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-plain-syntax"> }</span>
|
||||||
|
@ -350,7 +366,7 @@ end, but it's syntactically valid.)
|
||||||
</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">new_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::anl_new</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::new_link</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">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">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">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">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>
|
<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>
|
||||||
|
@ -360,7 +376,7 @@ end, but it's syntactically valid.)
|
||||||
</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">new_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::anl_new</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::new_link</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">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">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">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">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">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">new_anl</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>
|
||||||
|
@ -371,27 +387,29 @@ end, but it's syntactically valid.)
|
||||||
</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">anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP7" class="function-link"><span class="function-syntax">ActionNameLists::flip_anl_parity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</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><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><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="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="plain-syntax"> </span><span class="identifier-syntax">anl</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">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">parameter</span><span class="plain-syntax">[</span><span class="identifier-syntax">anl</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">parc</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">parc</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">anl</span><span class="plain-syntax"> };</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP1" class="function-link"><span class="function-syntax">ActionNameLists::new_head</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</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#SP7" class="function-link"><span class="function-syntax">ActionNameLists::negate_all</span></a><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">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">head</span><span class="plain-syntax"> };</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP3">§3</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP3">§3</a>.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>§5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Join parsed ANLs</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
|
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>§5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Join parsed ANLs</span><span class="named-paragraph-number">5.1</span></span><span class="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">action_name_list</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_link</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">action_name_list</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_link</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">action_name_list</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">anl_link</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">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="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">else</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">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">anl_link</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</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</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</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</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</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">next</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="identifier-syntax">join</span><span class="plain-syntax"> = </span><span class="identifier-syntax">right_tail</span><span class="plain-syntax">;</span>
|
||||||
|
@ -402,46 +420,37 @@ end, but it's syntactically valid.)
|
||||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b></p>
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b></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_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::flip_anl_parity</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">ActionNameLists::flip_anl_parity</span></span>:<br/><a href="4-anl.html#SP3">§3</a>, <a href="4-anl.html#SP3_2">§3.2</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">anl</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">flip_all</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::negate_all</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::negate_all</span></span>:<br/><a href="4-anl.html#SP3_2">§3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">flip_all</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">head</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">L</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_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="identifier-syntax">body</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)?(-1):1;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)?(-1):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="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</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">anl</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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">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">anl_head</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::parse</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::parse</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP22">§22</a>, <a href="4-ap2.html#SP25_3">§25.3</a>, <a href="4-ap2.html#SP25_4">§25.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">anl_head</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::parse</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::parse</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP22">§22</a>, <a href="4-ap2.html#SP25_3">§25.3</a>, <a href="4-ap2.html#SP25_4">§25.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">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="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="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="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="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">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">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</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><a href="4-anl.html#SP1" class="function-link"><span class="function-syntax">ActionNameLists::new_head</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> }</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">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></p>
|
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::anl_parse_internal</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::anl_parse_internal</span></span>:<br/><a href="4-anl.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::anl_parse_internal</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::anl_parse_internal</span></span>:<br/><a href="4-anl.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||||
<span class="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">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">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">action_name_list</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">anl_link</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#SP2" class="function-link"><span class="function-syntax">ActionNameLists::anl_new</span></a><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#SP2" class="function-link"><span class="function-syntax">ActionNameLists::new_link</span></a><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="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="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>
|
||||||
|
@ -500,14 +509,14 @@ end, but it's syntactically valid.)
|
||||||
<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">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">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">else</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">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">anl_link</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">abbreviation_level</span><span class="plain-syntax"> < </span><span class="identifier-syntax">new_anl</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">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">abbreviation_level</span><span class="plain-syntax"> < </span><span class="identifier-syntax">new_anl</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</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</span><span 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</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="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</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</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">new_anl</span><span class="plain-syntax">-></span><span class="element-syntax">next</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="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#SP2" class="function-link"><span class="function-syntax">ActionNameLists::anl_new</span></a><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#SP2" class="function-link"><span class="function-syntax">ActionNameLists::new_link</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DontInclude:</span><span class="plain-syntax"> ;</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">anl_list</span><span class="plain-syntax">);</span>
|
||||||
|
@ -515,15 +524,15 @@ end, but it's syntactically valid.)
|
||||||
<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">scanning_anl_only_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">scanning_anl_only_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::extract_actions_only</span><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::extract_actions_only</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">action_name_list</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><span class="reserved-syntax">anl_head</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><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">scanning_anl_only_mode</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">scanning_anl_only_mode</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">scanning_anl_only_mode</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">scanning_anl_only_mode</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">s2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">permit_trying_omission</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">permit_trying_omission</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">permit_trying_omission</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">permit_trying_omission</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><action-pattern></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><action-pattern></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::list</span></a><span class="plain-syntax">(</span><span class="function-syntax"><<rp>></span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::list</span></a><span class="plain-syntax">(</span><span class="function-syntax"><<rp>></span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">anl</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">anyone_specified</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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">anyone_specified</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax"> == </span><span class="constant-syntax">ACTOR_EXPLICITLY_UNIVERSAL</span><span class="plain-syntax">) </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">anyone_specified</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="constant-syntax">ACTOR_EXPLICITLY_UNIVERSAL</span><span class="plain-syntax">) </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">anyone_specified</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>
|
||||||
|
@ -533,10 +542,12 @@ end, but it's syntactically valid.)
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">anl</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</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::get_single_action</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::get_single_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP25_3">§25.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">anl</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::get_single_action</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::get_single_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</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">matchl</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">matchl</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">anf</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">anf</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$8\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">anl</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">head</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::negated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">head</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">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">head</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">anl</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">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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> == -1) </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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> == -1) </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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</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>
|
||||||
|
@ -560,16 +571,36 @@ end, but it's syntactically valid.)
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">anf</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">anf</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::get_explicit_anyone_flag</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::get_explicit_anyone_flag</span><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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">anl</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">anl</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">anyone_specified</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</span><span class="plain-syntax">-></span><span class="element-syntax">anyone_specified</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::negated</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::negated</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP33_1">§33.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::negated</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::negated</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#SP33_1">§33.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">head</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">head</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">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</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">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</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('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::nonempty</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">head</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::within_action_context</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::within_action_context</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</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">head</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">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP1" class="function-link"><span class="function-syntax">ActionNameLists::first_item</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">head</span><span 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">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">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><a href="4-nap.html#SP3" class="function-link"><span class="function-syntax">NamedActionPatterns::within_action_context</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><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="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">item</span><span class="plain-syntax">-></span><span class="element-syntax">parity</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">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">item</span><span class="plain-syntax">-></span><span class="element-syntax">parity</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="identifier-syntax">TRUE</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>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Specificity of ANLs. </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. Specificity of ANLs. </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
|
||||||
|
@ -579,7 +610,7 @@ used in sorting algorithms.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::compare_specificity</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::compare_specificity</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26">§26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">, </span><span class="reserved-syntax">anl_head</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('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::compare_specificity</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP26">§26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">, </span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl2</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax">, </span><span class="identifier-syntax">count2</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax">, </span><span class="identifier-syntax">count2</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">count2</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl2</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">count2</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl2</span><span class="plain-syntax">);</span>
|
||||||
|
@ -592,12 +623,12 @@ 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::count_actions_covered</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::count_actions_covered</span></span>:<br/><a href="4-anl.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::count_actions_covered</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::count_actions_covered</span></span>:<br/><a href="4-anl.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</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">k</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">infinity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</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">k</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">parity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">infinity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">head</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">infinity</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">head</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">infinity</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">infinity</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">infinity</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</span><span class="plain-syntax">) </span><span class="identifier-syntax">parity</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#SP9" class="function-link"><span class="function-syntax">ActionNameLists::negated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">head</span><span class="plain-syntax">)) </span><span class="identifier-syntax">parity</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_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">next</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">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">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="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> == -1) </span><span class="identifier-syntax">parity</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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> == -1) </span><span class="identifier-syntax">parity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -353,11 +353,11 @@ STV clauses; (2) get this right:
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_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#SP26">§26</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#SP26">§26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">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="element-syntax">action_list</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">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP1" 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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_valid</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::is_valid</span></span>:<br/><a href="4-ap2.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_valid</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::is_valid</span></span>:<br/><a href="4-ap2.html#SP22">§22</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>
|
||||||
|
@ -371,32 +371,26 @@ STV clauses; (2) get this right:
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::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#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="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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">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">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="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::within_action_context</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">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="element-syntax">body</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</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><a href="4-nap.html#SP3" class="function-link"><span class="function-syntax">NamedActionPatterns::within_action_context</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="element-syntax">body</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">an</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">anl</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="element-syntax">body</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">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="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</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">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">anl</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</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="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">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/>Action Name Lists - <a href="4-anl.html#SP9">§9</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">anl_head</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/>Action Name Lists - <a href="4-anl.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<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="element-syntax">action_list</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="element-syntax">body</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="element-syntax">body</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">parity</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</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#SP1" 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="constant-syntax">1</span><span class="plain-syntax">) &&</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</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><a href="4-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::negated</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">FALSE</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#SP1" 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="element-syntax">parity</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">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="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><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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</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#SP9" 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>
|
||||||
|
|
||||||
|
@ -1006,7 +1000,7 @@ here — a constant, a description, a table entry, a variable, and so on.
|
||||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::parse_action_pattern_dash</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">ActionPatterns::parse_action_pattern_dash</span></span>:<br/><a href="4-ap2.html#SP22">§22</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">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::parse_action_pattern_dash</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">ActionPatterns::parse_action_pattern_dash</span></span>:<br/><a href="4-ap2.html#SP22">§22</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">failure_this_call</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pap_failure_reason</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">failure_this_call</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</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">i</span><span class="plain-syntax">, </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="constant-syntax">0</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">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">anl_link</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><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prevailing_ap_tense</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prevailing_ap_tense</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">(); </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">(); </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1030,7 +1024,7 @@ here — a constant, a description, a table entry, a variable, and so on.
|
||||||
<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">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><a href="4-anl.html#SP1" class="function-link"><span class="function-syntax">ActionNameLists::new_head</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</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><a href="4-anl.html#SP1" class="function-link"><span class="function-syntax">ActionNameLists::new_head</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</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">anl</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</span><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">nap_listed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><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">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">action_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="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="identifier-syntax">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">NULL</span><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">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">action_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">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>
|
||||||
|
|
||||||
|
@ -1066,10 +1060,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">anl_head</span><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">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">preliminary_anl</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP8" 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><a href="4-anl.html#SP8" 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</span><span class="plain-syntax"> *</span><span class="identifier-syntax">chief_an</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::get_single_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>
|
|
||||||
<span class="plain-syntax"> </span><a href="4-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::get_single_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">preliminary_anl</span><span class="plain-syntax">?(</span><span class="identifier-syntax">preliminary_anl</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">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>
|
||||||
|
@ -1144,9 +1136,9 @@ 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#SP25_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">25.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#SP25_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">25.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#SP25_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">25.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#SP25_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">25.5.3</span></a></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">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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><span class="identifier-syntax">anl</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">first_position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first_valid</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_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first_valid</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_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="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</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">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</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><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parc</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><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parc</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
||||||
|
@ -1178,7 +1170,7 @@ par-count 0, so the minimum is 0.)
|
||||||
</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">entry</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</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">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</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="named-paragraph-container code-font"><a href="4-ap2.html#SP25_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">25.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#SP25_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">25.5.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
@ -1299,7 +1291,7 @@ 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">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="reserved-syntax">action_name_list</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">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_link</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">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="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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">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</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">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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">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</span><span 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">delete_this_link</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</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">delete_this_link</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</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">prev</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">word_position</span><span class="plain-syntax"> != </span><span class="identifier-syntax">entry</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">prev</span><span class="plain-syntax">-></span><span class="element-syntax">word_position</span><span class="plain-syntax"> != </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">word_position</span><span class="plain-syntax">)) {</span>
|
||||||
|
@ -1340,7 +1332,7 @@ description.
|
||||||
</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">entry</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">anl_link</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">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">pos</span><span class="plain-syntax"> = -1, </span><span class="identifier-syntax">negation_state</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</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">pos</span><span class="plain-syntax"> = -1, </span><span class="identifier-syntax">negation_state</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">negate_pattern</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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</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">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</span><span 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">delete_this_link</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">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">delete_this_link</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">word_position</span><span class="plain-syntax">)) {</span>
|
||||||
|
@ -1373,7 +1365,7 @@ 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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kinds_observed_in_list</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">kinds_observed_in_list</span><span class="plain-syntax">[2];</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">[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="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</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_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</span><span 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">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">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">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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</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">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>
|
||||||
|
@ -1401,7 +1393,7 @@ the case when the first action name in the list is <span class="extract"><span c
|
||||||
<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">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="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</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_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</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</span><span 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">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><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="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><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">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>
|
||||||
|
@ -2015,8 +2007,9 @@ 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">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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</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="element-syntax">body</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">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP1" 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="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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">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="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>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
||||||
|
@ -2029,8 +2022,8 @@ 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">NOUN_MATCHES_AS_VALUE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">NOUN_MATCHES_AS_VALUE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">action_list</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="element-syntax">body</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="element-syntax">body</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">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_second</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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</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="identifier-syntax">kind_of_second</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">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_second</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax">)) {</span>
|
||||||
|
@ -2498,14 +2491,15 @@ 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">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">-></span><span class="element-syntax">body</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">L</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP1" 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">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">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">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="element-syntax">body</span><span class="plain-syntax">-></span><span class="element-syntax">next</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">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP1" 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><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">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="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="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>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTActions::double_sharp</span><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="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTActions::double_sharp</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="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||||
|
|
||||||
|
|
|
@ -127,7 +127,7 @@ 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::within_action_context</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::within_action_context</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</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::within_action_context</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::within_action_context</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="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>
|
||||||
|
|
|
@ -226,19 +226,17 @@ generated from the PHUD elsewhere.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax"> = </span><a href="3-pu.html#SP15" class="function-link"><span class="function-syntax">Phrases::Usage::get_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax"> = </span><a href="3-pu.html#SP15" class="function-link"><span class="function-syntax">Phrases::Usage::get_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rlb.html#SP9" class="function-link"><span class="function-syntax">Rulebooks::requires_specific_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rlb.html#SP9" class="function-link"><span class="function-syntax">Rulebooks::requires_specific_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">original_owner</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">waiver</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">waiver</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">anl</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-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">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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax"> = </span><a href="3-pu.html#SP13" class="function-link"><span class="function-syntax">Phrases::Usage::get_prewhile_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phud</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">PW</span><span class="plain-syntax"> = </span><a href="3-pu.html#SP13" class="function-link"><span class="function-syntax">Phrases::Usage::get_prewhile_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span 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">PW</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">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">PW</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">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">PW</span><span 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">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="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionNameLists::extract_actions_only</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionNameLists::extract_actions_only</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</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_single_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl</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_single_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">head</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="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="plain-syntax"> </span><span class="identifier-syntax">ActionNameLists::get_explicit_anyone_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ActionNameLists::get_explicit_anyone_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">head</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">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="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>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">waiver</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">waiver</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">original_owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">CHECK_RB</span><span class="plain-syntax">]) </span><span class="identifier-syntax">waiver</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">original_owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">CHECK_RB</span><span class="plain-syntax">]) </span><span class="identifier-syntax">waiver</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -459,18 +459,18 @@ infrastructure, and we access it with a single call.
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTActions::emit_anl</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTActions::emit_anl</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl_head</span><span class="plain-syntax"> *</span><span class="identifier-syntax">head</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">head</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">head</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="plain-syntax"> </span><span class="identifier-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="identifier-syntax">body</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">head</span><span class="plain-syntax">-></span><span class="identifier-syntax">body</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</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="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Emitting action name list: $L"</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">ACTION_PATTERN_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Emitting action name list: $L"</span><span class="plain-syntax">, </span><span class="identifier-syntax">head</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="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) </span><span class="identifier-syntax">C</span><span class="plain-syntax">++;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) </span><span class="identifier-syntax">C</span><span class="plain-syntax">++;</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> == -1) { </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NOT_BIP</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); }</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> == -1) { </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NOT_BIP</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); }</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">downs</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">N</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">downs</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl_link</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax">; </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> != </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="identifier-syntax">parity</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"mixed parity"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> != </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="identifier-syntax">parity</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"mixed parity"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">++;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span 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="identifier-syntax">C</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">OR_BIP</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); </span><span class="identifier-syntax">downs</span><span class="plain-syntax">++; }</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> < </span><span class="identifier-syntax">C</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">OR_BIP</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); </span><span class="identifier-syntax">downs</span><span class="plain-syntax">++; }</span>
|
||||||
|
|
|
@ -39,7 +39,7 @@ Total memory consumption was 258576K = 253 MB
|
||||||
0.1% scan_directory 70 objects, 288960 bytes
|
0.1% scan_directory 70 objects, 288960 bytes
|
||||||
0.1% noun 2379 objects, 285480 bytes
|
0.1% noun 2379 objects, 285480 bytes
|
||||||
---- inference_subject 665 objects, 260680 bytes
|
---- inference_subject 665 objects, 260680 bytes
|
||||||
---- action_name_list_array 3 x 1000 = 3000 objects, 240096 bytes
|
---- anl_link_array 3 x 1000 = 3000 objects, 240096 bytes
|
||||||
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
|
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
|
||||||
---- linguistic_stock_item 3315 objects, 159120 bytes
|
---- linguistic_stock_item 3315 objects, 159120 bytes
|
||||||
---- binary_predicate 321 objects, 156648 bytes
|
---- binary_predicate 321 objects, 156648 bytes
|
||||||
|
@ -74,6 +74,7 @@ Total memory consumption was 258576K = 253 MB
|
||||||
---- response_message 407 objects, 35816 bytes
|
---- response_message 407 objects, 35816 bytes
|
||||||
---- production_list 618 objects, 34608 bytes
|
---- production_list 618 objects, 34608 bytes
|
||||||
---- regions_data 670 objects, 32160 bytes
|
---- regions_data 670 objects, 32160 bytes
|
||||||
|
---- anl_head_array 2 x 1000 = 2000 objects, 32064 bytes
|
||||||
---- HTML_tag_array 1 x 1000 objects, 32032 bytes
|
---- HTML_tag_array 1 x 1000 objects, 32032 bytes
|
||||||
---- property_permission 96 objects, 30720 bytes
|
---- property_permission 96 objects, 30720 bytes
|
||||||
---- verb_sense 403 objects, 29016 bytes
|
---- verb_sense 403 objects, 29016 bytes
|
||||||
|
@ -89,7 +90,6 @@ Total memory consumption was 258576K = 253 MB
|
||||||
---- property 146 objects, 18688 bytes
|
---- property 146 objects, 18688 bytes
|
||||||
---- action_name 90 objects, 18000 bytes
|
---- action_name 90 objects, 18000 bytes
|
||||||
---- parse_node_tree 20 objects, 17280 bytes
|
---- parse_node_tree 20 objects, 17280 bytes
|
||||||
---- anl_head_array 2 x 1000 = 2000 objects, 16064 bytes
|
|
||||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||||
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
||||||
---- to_phrase_request 59 objects, 15576 bytes
|
---- to_phrase_request 59 objects, 15576 bytes
|
||||||
|
@ -245,5 +245,5 @@ Total memory consumption was 258576K = 253 MB
|
||||||
---- emitter array storage 12320 bytes in 8 claims
|
---- emitter array storage 12320 bytes in 8 claims
|
||||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||||
|
|
||||||
19.9% was overhead - 52773664 bytes = 51536K = 50 MB
|
19.9% was overhead - 52757664 bytes = 51521K = 50 MB
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
100.0% in inform7 run
|
100.0% in inform7 run
|
||||||
67.0% in compilation to Inter
|
67.0% in compilation to Inter
|
||||||
25.6% in //Phrases::Manager::compile_first_block//
|
25.6% in //Phrases::Manager::compile_first_block//
|
||||||
8.5% in //Phrases::Manager::compile_as_needed//
|
8.3% in //Phrases::Manager::compile_as_needed//
|
||||||
7.0% in //Strings::compile_responses//
|
6.9% in //Strings::compile_responses//
|
||||||
6.1% in //InferenceSubjects::emit_all//
|
6.2% in //InferenceSubjects::emit_all//
|
||||||
4.3% in //MajorNodes::pre_pass//
|
4.2% in //MajorNodes::pre_pass//
|
||||||
3.4% in //MajorNodes::pass_1//
|
3.3% in //MajorNodes::pass_1//
|
||||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
1.9% in //Phrases::Manager::RulePrintingRule_routine//
|
||||||
2.0% in //Phrases::Manager::rulebooks_array//
|
1.9% in //Phrases::Manager::rulebooks_array//
|
||||||
1.0% in //RTVerbs::ConjugateVerb//
|
1.0% in //RTVerbs::ConjugateVerb//
|
||||||
0.9% in //Phrases::Manager::traverse//
|
0.8% 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//
|
||||||
2.9% not specifically accounted for
|
3.4% not specifically accounted for
|
||||||
30.5% in running Inter pipeline
|
30.4% in running Inter pipeline
|
||||||
9.8% in inter step 2/12: link
|
9.8% in inter step 2/12: link
|
||||||
9.8% in step preparation
|
9.6% in step preparation
|
||||||
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
|
||||||
|
@ -32,6 +32,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.0% not specifically accounted for
|
2.3% not specifically accounted for
|
||||||
2.0% in supervisor
|
1.9% in supervisor
|
||||||
0.4% not specifically accounted for
|
0.6% not specifically accounted for
|
||||||
|
|
|
@ -265,7 +265,7 @@ DECLARE_CLASS(rubric_holder)
|
||||||
@e slash_gpr_CLASS
|
@e slash_gpr_CLASS
|
||||||
@e spatial_data_CLASS
|
@e spatial_data_CLASS
|
||||||
|
|
||||||
@e action_name_list_CLASS
|
@e anl_link_CLASS
|
||||||
@e action_pattern_CLASS
|
@e action_pattern_CLASS
|
||||||
@e anl_head_CLASS
|
@e anl_head_CLASS
|
||||||
@e ap_optional_clause_CLASS
|
@e ap_optional_clause_CLASS
|
||||||
|
@ -299,7 +299,7 @@ DECLARE_CLASS(scene)
|
||||||
DECLARE_CLASS(slash_gpr)
|
DECLARE_CLASS(slash_gpr)
|
||||||
DECLARE_CLASS(spatial_data)
|
DECLARE_CLASS(spatial_data)
|
||||||
|
|
||||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(action_name_list, 1000)
|
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(anl_link, 1000)
|
||||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(action_pattern, 100)
|
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(action_pattern, 100)
|
||||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(anl_head, 1000)
|
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(anl_head, 1000)
|
||||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(ap_optional_clause, 400)
|
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(ap_optional_clause, 400)
|
||||||
|
|
|
@ -13,7 +13,7 @@ COMPILE_WRITER(action_pattern *, ActionPatterns::log)
|
||||||
COMPILE_WRITER(grammar_verb *, PL::Parsing::Verbs::log)
|
COMPILE_WRITER(grammar_verb *, PL::Parsing::Verbs::log)
|
||||||
COMPILE_WRITER(grammar_line *, PL::Parsing::Lines::log)
|
COMPILE_WRITER(grammar_line *, PL::Parsing::Lines::log)
|
||||||
COMPILE_WRITER(anl_head *, ActionNameLists::log)
|
COMPILE_WRITER(anl_head *, ActionNameLists::log)
|
||||||
COMPILE_WRITER(action_name_list *, ActionNameLists::log_anl)
|
COMPILE_WRITER(anl_link *, ActionNameLists::log_anl_link)
|
||||||
COMPILE_WRITER(action_name *, ActionNameNames::log)
|
COMPILE_WRITER(action_name *, ActionNameNames::log)
|
||||||
|
|
||||||
void IFModule::start(void) {
|
void IFModule::start(void) {
|
||||||
|
@ -53,7 +53,7 @@ void IFModule::start(void) {
|
||||||
REGISTER_WRITER('G', PL::Parsing::Verbs::log);
|
REGISTER_WRITER('G', PL::Parsing::Verbs::log);
|
||||||
REGISTER_WRITER('g', PL::Parsing::Lines::log);
|
REGISTER_WRITER('g', PL::Parsing::Lines::log);
|
||||||
REGISTER_WRITER('L', ActionNameLists::log);
|
REGISTER_WRITER('L', ActionNameLists::log);
|
||||||
REGISTER_WRITER('8', ActionNameLists::log_anl);
|
REGISTER_WRITER('8', ActionNameLists::log_anl_link);
|
||||||
REGISTER_WRITER('l', ActionNameNames::log);
|
REGISTER_WRITER('l', ActionNameNames::log);
|
||||||
|
|
||||||
@ =
|
@ =
|
||||||
|
|
|
@ -9,28 +9,32 @@ something" -- the generic I7 text for "any action at all".
|
||||||
|
|
||||||
=
|
=
|
||||||
typedef struct anl_head {
|
typedef struct anl_head {
|
||||||
struct action_name_list *body;
|
struct anl_link *body;
|
||||||
|
int anyone_specified;
|
||||||
} anl_head;
|
} anl_head;
|
||||||
|
|
||||||
anl_head *ActionNameLists::new_head(action_name_list *anl) {
|
anl_head *ActionNameLists::new_head(anl_link *anl, int negate_pattern) {
|
||||||
anl_head *head = CREATE(anl_head);
|
anl_head *head = CREATE(anl_head);
|
||||||
head->body = anl;
|
head->body = anl;
|
||||||
|
head->anyone_specified = FALSE;
|
||||||
|
if (negate_pattern) {
|
||||||
|
if (anl == NULL) internal_error("cannot");
|
||||||
|
anl->negate_pattern = negate_pattern;
|
||||||
|
}
|
||||||
return head;
|
return head;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct action_name_list {
|
typedef struct anl_link {
|
||||||
struct anl_item item;
|
struct anl_item item;
|
||||||
struct action_name_list *next; /* next in this ANL list */
|
struct anl_link *next; /* next in this ANL list */
|
||||||
int delete_this_link; /* used temporarily during parsing */
|
int delete_this_link; /* used temporarily during parsing */
|
||||||
|
|
||||||
int word_position; /* and some values used temporarily during parsing */
|
int word_position; /* and some values used temporarily during parsing */
|
||||||
int negate_pattern; /* parity of the entire list which this heads */
|
int negate_pattern; /* parity of the entire list which this heads */
|
||||||
int parc;
|
int parc;
|
||||||
struct wording parameter[2];
|
struct wording parameter[2];
|
||||||
struct wording in_clause;
|
struct wording in_clause;
|
||||||
int abbreviation_level; /* number of words missing */
|
int abbreviation_level; /* number of words missing */
|
||||||
int anyone_specified;
|
} anl_link;
|
||||||
} action_name_list;
|
|
||||||
|
|
||||||
typedef struct anl_item {
|
typedef struct anl_item {
|
||||||
struct action_name *action_listed; /* the action in this ANL list entry */
|
struct action_name *action_listed; /* the action in this ANL list entry */
|
||||||
|
@ -38,14 +42,27 @@ typedef struct anl_item {
|
||||||
int parity; /* parity of just this individual item */
|
int parity; /* parity of just this individual item */
|
||||||
} anl_item;
|
} anl_item;
|
||||||
|
|
||||||
|
anl_item *ActionNameLists::first_item(anl_head *list) {
|
||||||
|
if ((list) && (list->body)) return &(list->body->item);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ActionNameLists::length(anl_head *list) {
|
||||||
|
int C = 0;
|
||||||
|
if (list)
|
||||||
|
for (anl_link *anl = list->body; anl; anl = anl->next)
|
||||||
|
C++;
|
||||||
|
return C;
|
||||||
|
}
|
||||||
|
|
||||||
@ The action name list is the part of an action pattern identifying
|
@ The action name list is the part of an action pattern identifying
|
||||||
which actions are allowed: "taking, dropping or examining" for
|
which actions are allowed: "taking, dropping or examining" for
|
||||||
example. The following routine extracts this from a potentially longer
|
example. The following routine extracts this from a potentially longer
|
||||||
text (e.g. "taking, dropping or examining a door").
|
text (e.g. "taking, dropping or examining a door").
|
||||||
|
|
||||||
=
|
=
|
||||||
action_name_list *ActionNameLists::anl_new(void) {
|
anl_link *ActionNameLists::new_link(void) {
|
||||||
action_name_list *new_anl = CREATE(action_name_list);
|
anl_link *new_anl = CREATE(anl_link);
|
||||||
new_anl->item.action_listed = NULL;
|
new_anl->item.action_listed = NULL;
|
||||||
new_anl->item.nap_listed = NULL;
|
new_anl->item.nap_listed = NULL;
|
||||||
new_anl->parc = 0;
|
new_anl->parc = 0;
|
||||||
|
@ -54,17 +71,16 @@ action_name_list *ActionNameLists::anl_new(void) {
|
||||||
new_anl->negate_pattern = FALSE;
|
new_anl->negate_pattern = FALSE;
|
||||||
new_anl->in_clause = EMPTY_WORDING;
|
new_anl->in_clause = EMPTY_WORDING;
|
||||||
new_anl->abbreviation_level = 0;
|
new_anl->abbreviation_level = 0;
|
||||||
new_anl->anyone_specified = FALSE;
|
|
||||||
new_anl->delete_this_link = FALSE;
|
new_anl->delete_this_link = FALSE;
|
||||||
return new_anl;
|
return new_anl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActionNameLists::log(anl_head *head) {
|
void ActionNameLists::log(anl_head *head) {
|
||||||
action_name_list *anl = (head)?(head->body):NULL;
|
anl_link *anl = (head)?(head->body):NULL;
|
||||||
ActionNameLists::log_anl(anl);
|
ActionNameLists::log_anl_link(anl);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActionNameLists::log_anl(action_name_list *anl) {
|
void ActionNameLists::log_anl_link(anl_link *anl) {
|
||||||
for (int c=0; anl; anl = anl->next, c++) {
|
for (int c=0; anl; anl = anl->next, c++) {
|
||||||
LOG("ANL entry %s(%d@%d): %s ",
|
LOG("ANL entry %s(%d@%d): %s ",
|
||||||
(anl->delete_this_link)?"(to be deleted) ":"",
|
(anl->delete_this_link)?"(to be deleted) ":"",
|
||||||
|
@ -82,11 +98,11 @@ void ActionNameLists::log_anl(action_name_list *anl) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActionNameLists::log_briefly(anl_head *head) {
|
void ActionNameLists::log_briefly(anl_head *head) {
|
||||||
action_name_list *anl = (head)?(head->body):NULL;
|
anl_link *anl = (head)?(head->body):NULL;
|
||||||
if (anl == NULL) LOG("<null-anl>");
|
if (anl == NULL) LOG("<null-anl>");
|
||||||
else {
|
else {
|
||||||
if (anl->negate_pattern) LOG("NOT[ ");
|
if (anl->negate_pattern) LOG("NOT[ ");
|
||||||
action_name_list *a;
|
anl_link *a;
|
||||||
for (a = anl; a; a = a->next) {
|
for (a = anl; a; a = a->next) {
|
||||||
if (a->item.nap_listed) {
|
if (a->item.nap_listed) {
|
||||||
if (a->item.parity == -1) LOG("not-");
|
if (a->item.parity == -1) LOG("not-");
|
||||||
|
@ -111,7 +127,7 @@ action_name *ActionNameLists::get_singleton_action(anl_head *anl) {
|
||||||
return an;
|
return an;
|
||||||
}
|
}
|
||||||
|
|
||||||
action_name_list *anl_being_parsed = NULL;
|
anl_link *anl_being_parsed = NULL;
|
||||||
|
|
||||||
@ The following handles action name lists, such as:
|
@ The following handles action name lists, such as:
|
||||||
|
|
||||||
|
@ -126,14 +142,14 @@ operands.
|
||||||
<action-list> ::=
|
<action-list> ::=
|
||||||
doing something/anything other than <anl-excluded> | ==> { FALSE, RP[1] }
|
doing something/anything other than <anl-excluded> | ==> { FALSE, RP[1] }
|
||||||
doing something/anything except <anl-excluded> | ==> { FALSE, RP[1] }
|
doing something/anything except <anl-excluded> | ==> { FALSE, RP[1] }
|
||||||
doing something/anything to/with <anl-to-tail> | ==> { TRUE, RP[1] }
|
doing something/anything to/with <anl-to-tail> | ==> { TRUE, ActionNameLists::new_head(RP[1], FALSE) }
|
||||||
doing something/anything | ==> @<Construct ANL for anything@>
|
doing something/anything | ==> @<Construct ANL for anything@>
|
||||||
doing something/anything ... | ==> { fail }
|
doing something/anything ... | ==> { fail }
|
||||||
<anl> ==> { TRUE, RP[1] }
|
<anl> ==> { TRUE, ActionNameLists::new_head(RP[1], FALSE) }
|
||||||
|
|
||||||
<anl-excluded> ::=
|
<anl-excluded> ::=
|
||||||
<anl> to/with {<anl-minimal-common-operand>} | ==> @<Add to-clause to excluded ANL@>;
|
<anl> to/with {<anl-minimal-common-operand>} | ==> @<Add to-clause to excluded ANL@>;
|
||||||
<anl> ==> { TRUE, ActionNameLists::flip_anl_parity(RP[1], FALSE) }
|
<anl> ==> { TRUE, ActionNameLists::new_head(RP[1], TRUE) }
|
||||||
|
|
||||||
<anl-minimal-common-operand> ::=
|
<anl-minimal-common-operand> ::=
|
||||||
_,/or ... | ==> { fail }
|
_,/or ... | ==> { fail }
|
||||||
|
@ -141,9 +157,9 @@ operands.
|
||||||
...
|
...
|
||||||
|
|
||||||
@<Construct ANL for anything@> =
|
@<Construct ANL for anything@> =
|
||||||
action_name_list *anl = ActionNameLists::anl_new();
|
anl_link *anl = ActionNameLists::new_link();
|
||||||
anl->word_position = Wordings::first_wn(W);
|
anl->word_position = Wordings::first_wn(W);
|
||||||
==> { TRUE, anl };
|
==> { TRUE, ActionNameLists::new_head(anl, FALSE) };
|
||||||
|
|
||||||
@ The trickiest form is:
|
@ The trickiest form is:
|
||||||
|
|
||||||
|
@ -170,14 +186,14 @@ for instance, we don't want to count the "in" from "fixed in place".
|
||||||
in ... ==> { TRUE, - }
|
in ... ==> { TRUE, - }
|
||||||
|
|
||||||
@<Augment ANL with in clause@> =
|
@<Augment ANL with in clause@> =
|
||||||
action_name_list *anl = RP[1];
|
anl_link *anl = RP[1];
|
||||||
anl->in_clause = GET_RW(<anl-in-tail>, 1);
|
anl->in_clause = GET_RW(<anl-in-tail>, 1);
|
||||||
|
|
||||||
@<Construct ANL for anything applied@> =
|
@<Construct ANL for anything applied@> =
|
||||||
action_name_list *new_anl;
|
anl_link *new_anl;
|
||||||
if ((!preform_lookahead_mode) && (anl_being_parsed)) new_anl = anl_being_parsed;
|
if ((!preform_lookahead_mode) && (anl_being_parsed)) new_anl = anl_being_parsed;
|
||||||
else {
|
else {
|
||||||
new_anl = ActionNameLists::anl_new();
|
new_anl = ActionNameLists::new_link();
|
||||||
new_anl->word_position = Wordings::first_wn(W);
|
new_anl->word_position = Wordings::first_wn(W);
|
||||||
}
|
}
|
||||||
new_anl->parameter[new_anl->parc] = W;
|
new_anl->parameter[new_anl->parc] = W;
|
||||||
|
@ -220,7 +236,7 @@ end, but it's syntactically valid.)
|
||||||
}
|
}
|
||||||
|
|
||||||
<anl-entry-with-action> internal {
|
<anl-entry-with-action> internal {
|
||||||
action_name_list *anl = ActionNameLists::anl_parse_internal(W);
|
anl_link *anl = ActionNameLists::anl_parse_internal(W);
|
||||||
if (anl) {
|
if (anl) {
|
||||||
==> { -, anl }; return TRUE;
|
==> { -, anl }; return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -228,36 +244,38 @@ end, but it's syntactically valid.)
|
||||||
}
|
}
|
||||||
|
|
||||||
@<Make an action pattern from named behaviour@> =
|
@<Make an action pattern from named behaviour@> =
|
||||||
action_name_list *new_anl = ActionNameLists::anl_new();
|
anl_link *new_anl = ActionNameLists::new_link();
|
||||||
new_anl->word_position = Wordings::first_wn(W);
|
new_anl->word_position = Wordings::first_wn(W);
|
||||||
new_anl->item.nap_listed = RP[1];
|
new_anl->item.nap_listed = RP[1];
|
||||||
==> { 0, new_anl };
|
==> { 0, new_anl };
|
||||||
|
|
||||||
@<Make an action pattern from named behaviour plus in@> =
|
@<Make an action pattern from named behaviour plus in@> =
|
||||||
action_name_list *new_anl = ActionNameLists::anl_new();
|
anl_link *new_anl = ActionNameLists::new_link();
|
||||||
new_anl->word_position = Wordings::first_wn(W);
|
new_anl->word_position = Wordings::first_wn(W);
|
||||||
new_anl->item.nap_listed = RP[1];
|
new_anl->item.nap_listed = RP[1];
|
||||||
new_anl->in_clause = GET_RW(<anl-in-tail>, 1);
|
new_anl->in_clause = GET_RW(<anl-in-tail>, 1);
|
||||||
==> { 0, new_anl };
|
==> { 0, new_anl };
|
||||||
|
|
||||||
@<Add to-clause to excluded ANL@> =
|
@<Add to-clause to excluded ANL@> =
|
||||||
action_name_list *anl = ActionNameLists::flip_anl_parity(RP[1], TRUE);
|
anl_link *anl = RP[1];
|
||||||
if ((anl == NULL) ||
|
if ((anl == NULL) ||
|
||||||
(ActionSemantics::can_have_noun(anl->item.action_listed) == FALSE)) {
|
(ActionSemantics::can_have_noun(anl->item.action_listed) == FALSE)) {
|
||||||
==> { fail production };
|
==> { fail production };
|
||||||
}
|
}
|
||||||
anl->parameter[anl->parc] = GET_RW(<anl-excluded>, 1);
|
anl->parameter[anl->parc] = GET_RW(<anl-excluded>, 1);
|
||||||
anl->parc++;
|
anl->parc++;
|
||||||
==> { 0, anl };
|
anl_head *head = ActionNameLists::new_head(anl, FALSE);
|
||||||
|
ActionNameLists::negate_all(head);
|
||||||
|
==> { FALSE, head };
|
||||||
|
|
||||||
@<Join parsed ANLs@> =
|
@<Join parsed ANLs@> =
|
||||||
action_name_list *join;
|
anl_link *join;
|
||||||
action_name_list *left_atom = RP[1];
|
anl_link *left_atom = RP[1];
|
||||||
action_name_list *right_tail = RP[2];
|
anl_link *right_tail = RP[2];
|
||||||
if (left_atom == NULL) { join = right_tail; }
|
if (left_atom == NULL) { join = right_tail; }
|
||||||
else if (right_tail == NULL) { join = left_atom; }
|
else if (right_tail == NULL) { join = left_atom; }
|
||||||
else {
|
else {
|
||||||
action_name_list *new_anl = right_tail;
|
anl_link *new_anl = right_tail;
|
||||||
while (new_anl->next != NULL) new_anl = new_anl->next;
|
while (new_anl->next != NULL) new_anl = new_anl->next;
|
||||||
new_anl->next = left_atom;
|
new_anl->next = left_atom;
|
||||||
join = right_tail;
|
join = right_tail;
|
||||||
|
@ -265,16 +283,10 @@ end, but it's syntactically valid.)
|
||||||
==> { 0, join };
|
==> { 0, join };
|
||||||
|
|
||||||
@ =
|
@ =
|
||||||
action_name_list *ActionNameLists::flip_anl_parity(action_name_list *anl, int flip_all) {
|
void ActionNameLists::negate_all(anl_head *head) {
|
||||||
if (flip_all) {
|
if (head)
|
||||||
action_name_list *L;
|
for (anl_link *L = head->body; L; L = L->next)
|
||||||
for (L = anl; L; L = L->next) {
|
|
||||||
L->item.parity = (L->item.parity == 1)?(-1):1;
|
L->item.parity = (L->item.parity == 1)?(-1):1;
|
||||||
}
|
|
||||||
} else {
|
|
||||||
anl->negate_pattern = (anl->negate_pattern)?FALSE:TRUE;
|
|
||||||
}
|
|
||||||
return anl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ =
|
@ =
|
||||||
|
@ -285,22 +297,19 @@ anl_head *ActionNameLists::parse(wording W, int tense) {
|
||||||
anl_parsing_tense = tense;
|
anl_parsing_tense = tense;
|
||||||
int r = <action-list>(W);
|
int r = <action-list>(W);
|
||||||
anl_parsing_tense = t;
|
anl_parsing_tense = t;
|
||||||
if (r) {
|
if (r) return <<rp>>;
|
||||||
action_name_list *anl = <<rp>>;
|
|
||||||
return ActionNameLists::new_head(anl);
|
|
||||||
}
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ =
|
@ =
|
||||||
action_name_list *ActionNameLists::anl_parse_internal(wording W) {
|
anl_link *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);
|
||||||
|
|
||||||
int tense = anl_parsing_tense;
|
int tense = anl_parsing_tense;
|
||||||
action_name_list *anl_list = NULL, *new_anl = NULL;
|
anl_link *anl_list = NULL, *new_anl = NULL;
|
||||||
|
|
||||||
action_name *an;
|
action_name *an;
|
||||||
new_anl = ActionNameLists::anl_new();
|
new_anl = ActionNameLists::new_link();
|
||||||
|
|
||||||
LOOP_OVER(an, action_name) {
|
LOOP_OVER(an, action_name) {
|
||||||
int x_ended = FALSE;
|
int x_ended = FALSE;
|
||||||
|
@ -359,14 +368,14 @@ action_name_list *ActionNameLists::anl_parse_internal(wording W) {
|
||||||
if (inc) {
|
if (inc) {
|
||||||
if (anl_list == NULL) anl_list = new_anl;
|
if (anl_list == NULL) anl_list = new_anl;
|
||||||
else {
|
else {
|
||||||
action_name_list *pos = anl_list, *prev = NULL;
|
anl_link *pos = anl_list, *prev = NULL;
|
||||||
while ((pos) && (pos->abbreviation_level < new_anl->abbreviation_level))
|
while ((pos) && (pos->abbreviation_level < new_anl->abbreviation_level))
|
||||||
prev = pos, pos = pos->next;
|
prev = pos, pos = pos->next;
|
||||||
if (prev) prev->next = new_anl; else anl_list = new_anl;
|
if (prev) prev->next = new_anl; else anl_list = new_anl;
|
||||||
new_anl->next = pos;
|
new_anl->next = pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new_anl = ActionNameLists::anl_new();
|
new_anl = ActionNameLists::new_link();
|
||||||
DontInclude: ;
|
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, anl_list);
|
||||||
|
@ -374,15 +383,15 @@ action_name_list *ActionNameLists::anl_parse_internal(wording W) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int scanning_anl_only_mode = FALSE;
|
int scanning_anl_only_mode = FALSE;
|
||||||
action_name_list *ActionNameLists::extract_actions_only(wording W) {
|
anl_head *ActionNameLists::extract_actions_only(wording W) {
|
||||||
action_name_list *anl = NULL;
|
anl_head *anl = NULL;
|
||||||
int s = scanning_anl_only_mode;
|
int s = scanning_anl_only_mode;
|
||||||
scanning_anl_only_mode = TRUE;
|
scanning_anl_only_mode = TRUE;
|
||||||
int s2 = permit_trying_omission;
|
int s2 = permit_trying_omission;
|
||||||
permit_trying_omission = TRUE;
|
permit_trying_omission = TRUE;
|
||||||
if (<action-pattern>(W)) {
|
if (<action-pattern>(W)) {
|
||||||
anl = ActionPatterns::list(<<rp>>);
|
anl = ActionPatterns::list(<<rp>>);
|
||||||
if (anl) {
|
if ((anl) && (anl->body)) {
|
||||||
anl->anyone_specified = FALSE;
|
anl->anyone_specified = FALSE;
|
||||||
if (<<r>> == ACTOR_EXPLICITLY_UNIVERSAL) anl->anyone_specified = TRUE;
|
if (<<r>> == ACTOR_EXPLICITLY_UNIVERSAL) anl->anyone_specified = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -392,10 +401,12 @@ action_name_list *ActionNameLists::extract_actions_only(wording W) {
|
||||||
return anl;
|
return anl;
|
||||||
}
|
}
|
||||||
|
|
||||||
action_name *ActionNameLists::get_single_action(action_name_list *anl) {
|
action_name *ActionNameLists::get_single_action(anl_head *head) {
|
||||||
int posn = -1, matchl = -1;
|
int posn = -1, matchl = -1;
|
||||||
action_name *anf = NULL;
|
action_name *anf = NULL;
|
||||||
LOGIF(RULE_ATTACHMENTS, "Getting single action from:\n$8\n", anl);
|
LOGIF(RULE_ATTACHMENTS, "Getting single action from:\n$L\n", head);
|
||||||
|
if (ActionNameLists::negated(head)) return NULL;
|
||||||
|
anl_link *anl = (head)?(head->body):NULL;
|
||||||
while (anl) {
|
while (anl) {
|
||||||
if (anl->item.parity == -1) return NULL;
|
if (anl->item.parity == -1) return NULL;
|
||||||
if (anl->negate_pattern) return NULL;
|
if (anl->negate_pattern) return NULL;
|
||||||
|
@ -419,8 +430,8 @@ action_name *ActionNameLists::get_single_action(action_name_list *anl) {
|
||||||
return anf;
|
return anf;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ActionNameLists::get_explicit_anyone_flag(action_name_list *anl) {
|
int ActionNameLists::get_explicit_anyone_flag(anl_head *anl) {
|
||||||
if (anl == NULL) return FALSE;
|
if ((anl == NULL) || (anl->body == NULL)) return FALSE;
|
||||||
return anl->anyone_specified;
|
return anl->anyone_specified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -430,6 +441,26 @@ int ActionNameLists::negated(anl_head *head) {
|
||||||
return head->body->negate_pattern;
|
return head->body->negate_pattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ActionNameLists::nonempty(anl_head *head) {
|
||||||
|
if ((head) && (head->body)) return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ActionNameLists::within_action_context(anl_head *head, action_name *an) {
|
||||||
|
if (head == NULL) return TRUE;
|
||||||
|
anl_item *item = ActionNameLists::first_item(head);
|
||||||
|
if (item == NULL) return TRUE;
|
||||||
|
if (item->nap_listed)
|
||||||
|
return NamedActionPatterns::within_action_context(item->nap_listed, an);
|
||||||
|
for (anl_link *anl = head->body; anl; anl = anl->next) {
|
||||||
|
anl_item *item = &(anl->item);
|
||||||
|
if (((item->action_listed == an) && (item->parity == 1)) ||
|
||||||
|
((item->action_listed != an) && (item->parity == -1)))
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
@h Specificity of ANLs.
|
@h Specificity of ANLs.
|
||||||
The following is one of Inform's standardised comparison routines, which
|
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
|
||||||
|
@ -454,8 +485,8 @@ int ActionNameLists::count_actions_covered(anl_head *head) {
|
||||||
int k = 0, parity = TRUE, infinity = NUMBER_CREATED(action_name);
|
int k = 0, parity = TRUE, infinity = NUMBER_CREATED(action_name);
|
||||||
if (head == NULL) return infinity;
|
if (head == NULL) return infinity;
|
||||||
if (head->body == NULL) return infinity;
|
if (head->body == NULL) return infinity;
|
||||||
if (head->body->negate_pattern) parity = FALSE;
|
if (ActionNameLists::negated(head)) parity = FALSE;
|
||||||
action_name_list *anl = head->body;
|
anl_link *anl = head->body;
|
||||||
for (; anl; anl = anl->next) {
|
for (; anl; anl = anl->next) {
|
||||||
if (anl->item.nap_listed) continue;
|
if (anl->item.nap_listed) continue;
|
||||||
if (anl->item.parity == -1) parity = FALSE;
|
if (anl->item.parity == -1) parity = FALSE;
|
||||||
|
|
|
@ -260,11 +260,11 @@ action_pattern *ActionPatterns::ap_store(action_pattern ap) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int ActionPatterns::is_named(action_pattern *ap) {
|
int ActionPatterns::is_named(action_pattern *ap) {
|
||||||
if (ap == NULL) return FALSE;
|
if (ap) {
|
||||||
if (ap->action_list == NULL) return FALSE;
|
anl_item *item = ActionNameLists::first_item(ap->action_list);
|
||||||
if (ap->action_list->body == NULL) return FALSE;
|
if ((item) && (item->nap_listed)) return TRUE;
|
||||||
if (ap->action_list->body->item.nap_listed == NULL) return FALSE;
|
}
|
||||||
return TRUE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ActionPatterns::is_valid(action_pattern *ap) {
|
int ActionPatterns::is_valid(action_pattern *ap) {
|
||||||
|
@ -278,32 +278,26 @@ int ActionPatterns::is_request(action_pattern *ap) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int ActionPatterns::within_action_context(action_pattern *ap, action_name *an) {
|
int ActionPatterns::within_action_context(action_pattern *ap, action_name *an) {
|
||||||
action_name_list *anl;
|
|
||||||
if (ap == NULL) return TRUE;
|
if (ap == NULL) return TRUE;
|
||||||
if (ap->action_list == NULL) return TRUE;
|
return ActionNameLists::within_action_context(ap->action_list, an);
|
||||||
if (ap->action_list->body == NULL) return TRUE;
|
|
||||||
if (ap->action_list->body->item.nap_listed)
|
|
||||||
return NamedActionPatterns::within_action_context(ap->action_list->body->item.nap_listed, an);
|
|
||||||
for (anl = ap->action_list->body; anl; anl = anl->next)
|
|
||||||
if (((anl->item.action_listed == an) && (anl->item.parity == 1)) ||
|
|
||||||
((anl->item.action_listed != an) && (anl->item.parity == -1)))
|
|
||||||
return TRUE;
|
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
action_name_list *ActionPatterns::list(action_pattern *ap) {
|
anl_head *ActionPatterns::list(action_pattern *ap) {
|
||||||
if (ap == NULL) return NULL;
|
if (ap == NULL) return NULL;
|
||||||
return (ap->action_list)?(ap->action_list->body):NULL;
|
return ap->action_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
action_name *ActionPatterns::required_action(action_pattern *ap) {
|
action_name *ActionPatterns::required_action(action_pattern *ap) {
|
||||||
if ((ap->action_list) && (ap->action_list->body) && (ap->action_list->body->next == NULL) && (ap->action_list->body->item.parity == 1) && (ap->action_list->body->negate_pattern == FALSE))
|
if ((ActionNameLists::length(ap->action_list) == 1) &&
|
||||||
return ap->action_list->body->item.action_listed;
|
(ActionNameLists::negated(ap->action_list) == FALSE)) {
|
||||||
|
anl_item *item = ActionNameLists::first_item(ap->action_list);
|
||||||
|
if (item->parity == 1) return item->action_listed;
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ActionPatterns::object_based(action_pattern *ap) {
|
int ActionPatterns::object_based(action_pattern *ap) {
|
||||||
if ((ap) && (ap->action_list) && (ap->action_list->body)) return TRUE;
|
if ((ap) && (ActionNameLists::nonempty(ap->action_list))) return TRUE;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -850,7 +844,7 @@ here -- a constant, a description, a table entry, a variable, and so on.
|
||||||
action_pattern ActionPatterns::parse_action_pattern_dash(wording W) {
|
action_pattern ActionPatterns::parse_action_pattern_dash(wording W) {
|
||||||
int failure_this_call = pap_failure_reason;
|
int failure_this_call = pap_failure_reason;
|
||||||
int i, j, k = 0;
|
int i, j, k = 0;
|
||||||
action_name_list *anl = NULL;
|
anl_link *anl = NULL;
|
||||||
int tense = prevailing_ap_tense;
|
int tense = prevailing_ap_tense;
|
||||||
|
|
||||||
action_pattern ap = ActionPatterns::new(); ap.valid = FALSE;
|
action_pattern ap = ActionPatterns::new(); ap.valid = FALSE;
|
||||||
|
@ -871,7 +865,7 @@ action_pattern ActionPatterns::parse_action_pattern_dash(wording W) {
|
||||||
@<With one small proviso, a valid action pattern has been parsed@> =
|
@<With one small proviso, a valid action pattern has been parsed@> =
|
||||||
pap_failure_reason = 0;
|
pap_failure_reason = 0;
|
||||||
ap.text_of_pattern = W;
|
ap.text_of_pattern = W;
|
||||||
ap.action_list = ActionNameLists::new_head(anl);
|
ap.action_list = ActionNameLists::new_head(anl, FALSE);
|
||||||
if ((anl != NULL) && (anl->item.nap_listed == NULL) && (anl->item.action_listed == NULL)) ap.action_list = NULL;
|
if ((anl != NULL) && (anl->item.nap_listed == NULL) && (anl->item.action_listed == NULL)) ap.action_list = NULL;
|
||||||
ap.valid = TRUE;
|
ap.valid = TRUE;
|
||||||
|
|
||||||
|
@ -898,10 +892,8 @@ 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@> =
|
||||||
anl_head *preliminary_anl =
|
anl_head *preliminary_anl = ActionNameLists::parse(W, tense);
|
||||||
ActionNameLists::parse(W, tense);
|
action_name *chief_an = ActionNameLists::get_single_action(preliminary_anl);
|
||||||
action_name *chief_an =
|
|
||||||
ActionNameLists::get_single_action(preliminary_anl?(preliminary_anl->body):NULL);
|
|
||||||
if (chief_an == NULL) {
|
if (chief_an == NULL) {
|
||||||
int x;
|
int x;
|
||||||
chief_an = ActionNameNames::longest_nounless(W, tense, &x);
|
chief_an = ActionNameNames::longest_nounless(W, tense, &x);
|
||||||
|
@ -966,9 +958,9 @@ crucial word position except for the one matched.
|
||||||
@<Report to the debugging log on the action decomposition@>;
|
@<Report to the debugging log on the action decomposition@>;
|
||||||
@<Find how many different positions have each possible minimum count@>;
|
@<Find how many different positions have each possible minimum count@>;
|
||||||
|
|
||||||
action_name_list *entry = anl;
|
anl_link *entry = anl;
|
||||||
int first_position = anl->word_position;
|
int first_position = anl->word_position;
|
||||||
action_name_list *first_valid = NULL;
|
anl_link *first_valid = NULL;
|
||||||
action_pattern trial_ap;
|
action_pattern trial_ap;
|
||||||
for (entry = anl; entry; entry = entry->next) {
|
for (entry = anl; entry; entry = entry->next) {
|
||||||
LOGIF(ACTION_PATTERN_PARSING, "Entry (%d):\n$8\n", entry->parc, entry);
|
LOGIF(ACTION_PATTERN_PARSING, "Entry (%d):\n$8\n", entry->parc, entry);
|
||||||
|
@ -995,7 +987,7 @@ can be read as "taking (inventory)", par-count 1, or "taking inventory",
|
||||||
par-count 0, so the minimum is 0.)
|
par-count 0, so the minimum is 0.)
|
||||||
|
|
||||||
@<Find the positions of individual action names, and their minimum parameter counts@> =
|
@<Find the positions of individual action names, and their minimum parameter counts@> =
|
||||||
action_name_list *entry;
|
anl_link *entry;
|
||||||
for (entry = anl; entry; entry = entry->next) {
|
for (entry = anl; entry; entry = entry->next) {
|
||||||
int pos = -1;
|
int pos = -1;
|
||||||
@<Find the position word of this particular action name@>;
|
@<Find the position word of this particular action name@>;
|
||||||
|
@ -1091,7 +1083,7 @@ description.
|
||||||
@<Adjudicate between topic and other actions@> =
|
@<Adjudicate between topic and other actions@> =
|
||||||
kind *K[2];
|
kind *K[2];
|
||||||
K[0] = NULL; K[1] = NULL;
|
K[0] = NULL; K[1] = NULL;
|
||||||
action_name_list *entry, *prev = NULL;
|
anl_link *entry, *prev = NULL;
|
||||||
for (entry = anl; entry; prev = entry, entry = entry->next) {
|
for (entry = anl; entry; prev = entry, entry = entry->next) {
|
||||||
if ((entry->delete_this_link == FALSE) && (entry->item.action_listed)) {
|
if ((entry->delete_this_link == FALSE) && (entry->item.action_listed)) {
|
||||||
if ((prev == NULL) || (prev->word_position != entry->word_position)) {
|
if ((prev == NULL) || (prev->word_position != entry->word_position)) {
|
||||||
|
@ -1128,7 +1120,7 @@ description.
|
||||||
}
|
}
|
||||||
|
|
||||||
@<Delete those action names which are to be deleted@> =
|
@<Delete those action names which are to be deleted@> =
|
||||||
action_name_list *entry, *prev = NULL;
|
anl_link *entry, *prev = NULL;
|
||||||
int pos = -1, negation_state = (anl)?(anl->negate_pattern):FALSE;
|
int pos = -1, negation_state = (anl)?(anl->negate_pattern):FALSE;
|
||||||
for (entry = anl; entry; entry = entry->next) {
|
for (entry = anl; entry; entry = entry->next) {
|
||||||
if ((entry->delete_this_link) || (pos == entry->word_position)) {
|
if ((entry->delete_this_link) || (pos == entry->word_position)) {
|
||||||
|
@ -1156,7 +1148,7 @@ the case when the first action name in the list is |NULL|).
|
||||||
kind *kinds_observed_in_list[2];
|
kind *kinds_observed_in_list[2];
|
||||||
kinds_observed_in_list[0] = NULL;
|
kinds_observed_in_list[0] = NULL;
|
||||||
kinds_observed_in_list[1] = NULL;
|
kinds_observed_in_list[1] = NULL;
|
||||||
for (action_name_list *entry = anl; entry; entry = entry->next)
|
for (anl_link *entry = anl; entry; entry = entry->next)
|
||||||
if (entry->item.nap_listed == NULL) {
|
if (entry->item.nap_listed == NULL) {
|
||||||
if (entry->parc > 0) {
|
if (entry->parc > 0) {
|
||||||
if (no_of_pars > 0) immiscible = TRUE;
|
if (no_of_pars > 0) immiscible = TRUE;
|
||||||
|
@ -1184,7 +1176,7 @@ the case when the first action name in the list is |NULL|).
|
||||||
}
|
}
|
||||||
if ((no_oow > 0) && (no_iw > 0)) immiscible = TRUE;
|
if ((no_oow > 0) && (no_iw > 0)) immiscible = TRUE;
|
||||||
|
|
||||||
for (action_name_list *entry = anl; entry; entry = entry->next)
|
for (anl_link *entry = anl; entry; entry = entry->next)
|
||||||
if (entry->item.action_listed) {
|
if (entry->item.action_listed) {
|
||||||
if ((no_of_pars >= 1) && (ActionSemantics::can_have_noun(entry->item.action_listed) == FALSE))
|
if ((no_of_pars >= 1) && (ActionSemantics::can_have_noun(entry->item.action_listed) == FALSE))
|
||||||
immiscible = TRUE;
|
immiscible = TRUE;
|
||||||
|
@ -1796,8 +1788,9 @@ void ActionPatterns::compile_pattern_match(value_holster *VH, action_pattern ap,
|
||||||
CPMC_NEEDED(SECOND_EXISTS_CPMC, NULL);
|
CPMC_NEEDED(SECOND_EXISTS_CPMC, NULL);
|
||||||
CPMC_NEEDED(SECOND_IS_INP1_CPMC, NULL);
|
CPMC_NEEDED(SECOND_IS_INP1_CPMC, NULL);
|
||||||
}
|
}
|
||||||
if ((ap.action_list) && (ap.action_list->body) && (ap.action_list->body->item.action_listed)) {
|
anl_item *item = ActionNameLists::first_item(ap.action_list);
|
||||||
kind_of_noun = ActionSemantics::kind_of_noun(ap.action_list->body->item.action_listed);
|
if ((item) && (item->action_listed)) {
|
||||||
|
kind_of_noun = ActionSemantics::kind_of_noun(item->action_listed);
|
||||||
if (kind_of_noun == NULL) kind_of_noun = K_object;
|
if (kind_of_noun == NULL) kind_of_noun = K_object;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1810,8 +1803,8 @@ void ActionPatterns::compile_pattern_match(value_holster *VH, action_pattern ap,
|
||||||
CPMC_NEEDED(NOUN_MATCHES_AS_VALUE_CPMC, NULL);
|
CPMC_NEEDED(NOUN_MATCHES_AS_VALUE_CPMC, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((ap.action_list) && (ap.action_list->body) && (ap.action_list->body->item.action_listed)) {
|
if ((item) && (item->action_listed)) {
|
||||||
kind_of_second = ActionSemantics::kind_of_second(ap.action_list->body->item.action_listed);
|
kind_of_second = ActionSemantics::kind_of_second(item->action_listed);
|
||||||
if (kind_of_second == NULL) kind_of_second = K_object;
|
if (kind_of_second == NULL) kind_of_second = K_object;
|
||||||
}
|
}
|
||||||
if (Kinds::Behaviour::is_object(kind_of_second)) {
|
if (Kinds::Behaviour::is_object(kind_of_second)) {
|
||||||
|
@ -2265,14 +2258,15 @@ void ActionPatterns::emit_past_tense(action_pattern *ap) {
|
||||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||||
else
|
else
|
||||||
Specifications::Compiler::emit_as_val(K_value, ap->noun_spec);
|
Specifications::Compiler::emit_as_val(K_value, ap->noun_spec);
|
||||||
action_name_list *anl = (ap->action_list)?(ap->action_list->body):NULL;
|
int L = ActionNameLists::length(ap->action_list);
|
||||||
if (anl == NULL)
|
if (L == 0)
|
||||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) -1);
|
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) -1);
|
||||||
else {
|
else {
|
||||||
if (ap->action_list->body->next) bad_form = TRUE;
|
anl_item *item = ActionNameLists::first_item(ap->action_list);
|
||||||
if (ActionSemantics::can_be_compiled_in_past_tense(anl->item.action_listed) == FALSE)
|
if (L >= 2) bad_form = TRUE;
|
||||||
|
if (ActionSemantics::can_be_compiled_in_past_tense(item->action_listed) == FALSE)
|
||||||
bad_form = TRUE;
|
bad_form = TRUE;
|
||||||
Produce::val_iname(Emit::tree(), K_value, RTActions::double_sharp(anl->item.action_listed));
|
Produce::val_iname(Emit::tree(), K_value, RTActions::double_sharp(item->action_listed));
|
||||||
}
|
}
|
||||||
Produce::up(Emit::tree());
|
Produce::up(Emit::tree());
|
||||||
|
|
||||||
|
|
|
@ -128,19 +128,17 @@ void Rules::Bookings::place(ph_usage_data *phud, booking *br) {
|
||||||
rulebook *original_owner = Phrases::Usage::get_rulebook(phud);
|
rulebook *original_owner = Phrases::Usage::get_rulebook(phud);
|
||||||
if (Rulebooks::requires_specific_action(original_owner)) {
|
if (Rulebooks::requires_specific_action(original_owner)) {
|
||||||
int waiver = FALSE;
|
int waiver = FALSE;
|
||||||
action_name_list *anl;
|
|
||||||
action_name *an;
|
action_name *an;
|
||||||
wording PW = Phrases::Usage::get_prewhile_text(phud);
|
wording PW = Phrases::Usage::get_prewhile_text(phud);
|
||||||
if (Wordings::nonempty(PW)) {
|
if (Wordings::nonempty(PW)) {
|
||||||
LOOP_THROUGH_WORDING(i, PW)
|
LOOP_THROUGH_WORDING(i, PW)
|
||||||
if (NamedActionPatterns::by_name(Wordings::from(PW, i)))
|
if (NamedActionPatterns::by_name(Wordings::from(PW, i)))
|
||||||
goto NotSingleAction;
|
goto NotSingleAction;
|
||||||
anl = ActionNameLists::extract_actions_only(PW);
|
anl_head *head = ActionNameLists::extract_actions_only(PW);
|
||||||
an = ActionNameLists::get_single_action(anl);
|
an = ActionNameLists::get_single_action(head);
|
||||||
Rules::set_marked_for_anyone(Rules::Bookings::get_rule(br),
|
Rules::set_marked_for_anyone(Rules::Bookings::get_rule(br),
|
||||||
ActionNameLists::get_explicit_anyone_flag(anl));
|
ActionNameLists::get_explicit_anyone_flag(head));
|
||||||
} else {
|
} else {
|
||||||
anl = NULL;
|
|
||||||
an = NULL;
|
an = NULL;
|
||||||
waiver = TRUE;
|
waiver = TRUE;
|
||||||
if (original_owner == built_in_rulebooks[CHECK_RB]) waiver = FALSE;
|
if (original_owner == built_in_rulebooks[CHECK_RB]) waiver = FALSE;
|
||||||
|
|
|
@ -380,18 +380,18 @@ int RTActions::action_variable_set_ID(action_name *an) {
|
||||||
|
|
||||||
void RTActions::emit_anl(anl_head *head) {
|
void RTActions::emit_anl(anl_head *head) {
|
||||||
if (head == NULL) return;
|
if (head == NULL) return;
|
||||||
action_name_list *anl = head->body;
|
anl_link *anl = head->body;
|
||||||
if (anl == NULL) return;
|
if (anl == NULL) return;
|
||||||
|
|
||||||
LOGIF(ACTION_PATTERN_COMPILATION, "Emitting action name list: $L", head);
|
LOGIF(ACTION_PATTERN_COMPILATION, "Emitting action name list: $L", head);
|
||||||
|
|
||||||
int C = 0;
|
int C = 0;
|
||||||
for (action_name_list *L = anl; L; L = L->next) C++;
|
for (anl_link *L = anl; L; L = L->next) C++;
|
||||||
|
|
||||||
if (anl->item.parity == -1) { Produce::inv_primitive(Emit::tree(), NOT_BIP); Produce::down(Emit::tree()); }
|
if (anl->item.parity == -1) { Produce::inv_primitive(Emit::tree(), NOT_BIP); Produce::down(Emit::tree()); }
|
||||||
|
|
||||||
int N = 0, downs = 0;
|
int N = 0, downs = 0;
|
||||||
for (action_name_list *L = anl; L; L = L->next) {
|
for (anl_link *L = anl; L; L = L->next) {
|
||||||
if (anl->item.parity != L->item.parity) internal_error("mixed parity");
|
if (anl->item.parity != L->item.parity) internal_error("mixed parity");
|
||||||
N++;
|
N++;
|
||||||
if (N < C) { Produce::inv_primitive(Emit::tree(), OR_BIP); Produce::down(Emit::tree()); downs++; }
|
if (N < C) { Produce::inv_primitive(Emit::tree(), OR_BIP); Produce::down(Emit::tree()); downs++; }
|
||||||
|
|
Loading…
Reference in a new issue