mirror of
https://github.com/ganelson/inform.git
synced 2024-07-02 23:14:57 +03:00
Further work on plugin calls for actions
This commit is contained in:
parent
6fa0f5381b
commit
23cb64fdd2
|
@ -380,7 +380,7 @@ have occurred, but if it does then the creation has worked.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">evaluation</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">evaluation</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-dbtr.html#SP4_1_3_3" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for trying to create any existing meaning as a new instance</span><span class="named-paragraph-number">4.1.3.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP5" class="function-link"><span class="function-syntax">Assertions::Creator::tabular_definitions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::tabular_definitions</span></a><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">NounPhrases::annotate_by_articles</span><span class="plain-syntax">(</span><span class="identifier-syntax">name_entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemBuffer::redirect_problem_sentence</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">name_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</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><a href="4-rpt.html#SP8" class="function-link"><span class="function-syntax">Refiner::refine_coupling</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
|
@ -393,7 +393,7 @@ have occurred, but if it does then the creation has worked.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-type-expression></span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">name_entry</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">evaluation</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-rpt.html#SP1" class="function-link"><span class="function-syntax">Refiner::give_spec_to_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">evaluation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP5" class="function-link"><span class="function-syntax">Assertions::Creator::tabular_definitions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::tabular_definitions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">name_entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-dbtr.html#SP4_1_3_4" class="named-paragraph-link"><span class="named-paragraph">Issue a problem to say that the creation failed</span><span class="named-paragraph-number">4.1.3.4</span></a></span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -109,7 +109,7 @@ end well.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-pr.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Forbid plural declarations containing quoted text</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-tc.html#SP11" class="function-link"><span class="function-syntax">Assertions::Creator::vet_name_for_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-tc.html#SP10" class="function-link"><span class="function-syntax">Assertions::Creator::vet_name_for_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Pluralisation::register</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">DefaultLanguage::get</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">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -108,7 +108,7 @@ example, the subtree for "an open door".
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">COMMON_NOUN_NT:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">InferenceSubjects::is_a_kind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">))) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">)))))</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP8" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</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-tc.html#SP7" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ThereIsVague</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"'there is...' can only be used to create objects"</span><span class="plain-syntax">,</span>
|
||||
|
@ -303,7 +303,7 @@ of <span class="extract"><span class="extract-syntax">px</span></span> and <span
|
|||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Splitting into cases. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::make_coupling</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">Assertions::make_coupling</span></span>:<br/><a href="4-ass.html#SP6_3_1">§6.3.1</a>, <a href="4-ass.html#SP6_3_2">§6.3.2</a>, <a href="4-ass.html#SP6_3_3">§6.3.3</a>, <a href="4-ass.html#SP6_3_5">§6.3.5</a>, <a href="4-ass.html#SP6_3_11">§6.3.11</a>, <a href="4-ass.html#SP6_3_14">§6.3.14</a>, <a href="4-ass.html#SP6_3_15">§6.3.15</a>, <a href="4-ass.html#SP6_3_20">§6.3.20</a>, <a href="4-ass.html#SP6_3_22">§6.3.22</a>, <a href="4-ass.html#SP6_3_25">§6.3.25</a>, <a href="4-ass.html#SP6_3_28">§6.3.28</a>, <a href="4-ass.html#SP6_3_31">§6.3.31</a>, <a href="4-ass.html#SP6_3_34">§6.3.34</a>, <a href="4-ass.html#SP6_3_34_1">§6.3.34.1</a>, <a href="4-ass.html#SP6_3_34_3">§6.3.34.3</a>, <a href="4-ass.html#SP6_3_34_5">§6.3.34.5</a>, <a href="4-ass.html#SP6_3_35">§6.3.35</a>, <a href="4-ass.html#SP6_3_36">§6.3.36</a>, <a href="4-ass.html#SP6_3_37">§6.3.37</a>, <a href="4-ass.html#SP6_3_41_7">§6.3.41.7</a>, <a href="4-ass.html#SP6_3_42">§6.3.42</a><br/>Passes through Major Nodes - <a href="2-ptmn.html#SP3_1_2_3">§3.1.2.3</a><br/>Define by Table Requests - <a href="3-dbtr.html#SP4_1_3">§4.1.3</a><br/>The Creator - <a href="4-tc.html#SP8_4_1">§8.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::make_coupling</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">Assertions::make_coupling</span></span>:<br/><a href="4-ass.html#SP6_3_1">§6.3.1</a>, <a href="4-ass.html#SP6_3_2">§6.3.2</a>, <a href="4-ass.html#SP6_3_3">§6.3.3</a>, <a href="4-ass.html#SP6_3_5">§6.3.5</a>, <a href="4-ass.html#SP6_3_11">§6.3.11</a>, <a href="4-ass.html#SP6_3_14">§6.3.14</a>, <a href="4-ass.html#SP6_3_15">§6.3.15</a>, <a href="4-ass.html#SP6_3_20">§6.3.20</a>, <a href="4-ass.html#SP6_3_22">§6.3.22</a>, <a href="4-ass.html#SP6_3_25">§6.3.25</a>, <a href="4-ass.html#SP6_3_28">§6.3.28</a>, <a href="4-ass.html#SP6_3_31">§6.3.31</a>, <a href="4-ass.html#SP6_3_34">§6.3.34</a>, <a href="4-ass.html#SP6_3_34_1">§6.3.34.1</a>, <a href="4-ass.html#SP6_3_34_3">§6.3.34.3</a>, <a href="4-ass.html#SP6_3_34_5">§6.3.34.5</a>, <a href="4-ass.html#SP6_3_35">§6.3.35</a>, <a href="4-ass.html#SP6_3_36">§6.3.36</a>, <a href="4-ass.html#SP6_3_37">§6.3.37</a>, <a href="4-ass.html#SP6_3_41_7">§6.3.41.7</a>, <a href="4-ass.html#SP6_3_42">§6.3.42</a><br/>Passes through Major Nodes - <a href="2-ptmn.html#SP3_1_2_3">§3.1.2.3</a><br/>Define by Table Requests - <a href="3-dbtr.html#SP4_1_3">§4.1.3</a><br/>The Creator - <a href="4-tc.html#SP7_4_1">§7.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_INDENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_assertion_recursive_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</span><span class="plain-syntax">;</span>
|
||||
|
@ -809,19 +809,10 @@ further sub-cases later.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">) == </span><span class="identifier-syntax">ACTION_NT</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_action_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span 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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-rpt.html#SP1" class="function-link"><span class="function-syntax">Refiner::give_spec_to_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_coupling</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PluginCalls::unusual_property_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_coupling</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::Using::assertion_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PeculiarProperty</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that is a very peculiar property value"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and ought to be something more definite and explicit."</span><span class="plain-syntax">);</span>
|
||||
|
@ -1605,7 +1596,7 @@ in general.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">multiplicity_ANNOT</span><span class="plain-syntax">) >= </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP8" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</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-tc.html#SP7" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</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-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_coupling</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">px</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -1642,7 +1633,7 @@ in general.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">sentence_is_existential_ANNOT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP8" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</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-tc.html#SP7" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</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-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_coupling</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">px</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -1661,7 +1652,7 @@ in general.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">px</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">) == </span><span class="identifier-syntax">EVERY_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><a href="4-ass2.html#SP8" class="function-link"><span class="function-syntax">Assertions::Assemblies::make_generalisation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP8" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP7" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_coupling</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
@ -2536,7 +2527,7 @@ can also be used adjectivally.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::instantiate_related_common_nouns_r</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">at</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">at</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">at</span><span class="plain-syntax">) == </span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP8" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">at</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP7" class="function-link"><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">at</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">at</span><span class="plain-syntax">) == </span><span class="identifier-syntax">AND_NT</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP9" class="function-link"><span class="function-syntax">Assertions::instantiate_related_common_nouns_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">at</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -170,7 +170,7 @@ each inference subject:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Assemblies::name_object_after</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">Assertions::Assemblies::name_object_after</span></span>:<br/>The Creator - <a href="4-tc.html#SP8_4_1">§8.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">after</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Assemblies::name_object_after</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">Assertions::Assemblies::name_object_after</span></span>:<br/>The Creator - <a href="4-tc.html#SP7_4_1">§7.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">after</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">assemblies_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ad</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::get_assemblies_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ad</span><span class="plain-syntax">-></span><span class="element-syntax">named_after</span><span class="plain-syntax"> = </span><span class="identifier-syntax">after</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ad</span><span class="plain-syntax">-></span><span class="element-syntax">named_after_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -102,7 +102,7 @@ either as an object, a value or a subtree — should have
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Assert::true_about</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::PropertyKnowledge::assert_property_list</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">Assertions::PropertyKnowledge::assert_property_list</span></span>:<br/>The Creator - <a href="4-tc.html#SP5_2_1">§5.2.1</a><br/>Assertions - <a href="4-ass.html#SP6_3_18">§6.3.18</a>, <a href="4-ass.html#SP6_3_29">§6.3.29</a>, <a href="4-ass.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner_subtree</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::PropertyKnowledge::assert_property_list</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">Assertions::PropertyKnowledge::assert_property_list</span></span>:<br/>The Creator - <a href="4-tc.html#SP4_2_1">§4.2.1</a><br/>Assertions - <a href="4-ass.html#SP6_3_18">§6.3.18</a>, <a href="4-ass.html#SP6_3_29">§6.3.29</a>, <a href="4-ass.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner_subtree</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list_subtree</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pk.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Check that the owner subtree isn't dangerously elaborate</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">owner_subtree</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -91,12 +91,12 @@ true — "an open door", say, or "a woman in London" — these are recor
|
|||
in a <span class="extract"><span class="extract-syntax">creation_proposition</span></span> annotation.
|
||||
</li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Refiner::give_subject_to_noun</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">Refiner::give_subject_to_noun</span></span>:<br/><a href="4-rpt.html#SP4">§4</a>, <a href="4-rpt.html#SP7_1">§7.1</a>, <a href="4-rpt.html#SP11_5_1">§11.5.1</a>, <a href="4-rpt.html#SP11_7">§11.7</a><br/>The Creator - <a href="4-tc.html#SP5_4">§5.4</a>, <a href="4-tc.html#SP8_4">§8.4</a>, <a href="4-tc.html#SP8_4_1">§8.4.1</a><br/>Assemblies - <a href="4-ass2.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Refiner::give_subject_to_noun</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">Refiner::give_subject_to_noun</span></span>:<br/><a href="4-rpt.html#SP4">§4</a>, <a href="4-rpt.html#SP7_1">§7.1</a>, <a href="4-rpt.html#SP11_5_1">§11.5.1</a>, <a href="4-rpt.html#SP11_7">§11.7</a><br/>The Creator - <a href="4-tc.html#SP4_4">§4.4</a>, <a href="4-tc.html#SP7_4">§7.4</a>, <a href="4-tc.html#SP7_4_1">§7.4.1</a><br/>Assemblies - <a href="4-ass2.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eval</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::as_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rpt.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Make a common or proper noun as appropriate</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Refiner::give_spec_to_noun</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">Refiner::give_spec_to_noun</span></span>:<br/><a href="4-rpt.html#SP6">§6</a>, <a href="4-rpt.html#SP11_8_2">§11.8.2</a>, <a href="4-rpt.html#SP11_8_2_5">§11.8.2.5</a><br/>Define by Table Requests - <a href="3-dbtr.html#SP4_1_3">§4.1.3</a>, <a href="3-dbtr.html#SP4_2_3_1">§4.2.3.1</a><br/>The Creator - <a href="4-tc.html#SP5_4">§5.4</a>, <a href="4-tc.html#SP5_4_1_1">§5.4.1.1</a><br/>Assertions - <a href="4-ass.html#SP6_3_11">§6.3.11</a><br/>Relation Knowledge - <a href="4-rk.html#SP2">§2</a><br/>Tables - <a href="5-tbl.html#SP22_1">§22.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eval</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Refiner::give_spec_to_noun</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">Refiner::give_spec_to_noun</span></span>:<br/><a href="4-rpt.html#SP6">§6</a>, <a href="4-rpt.html#SP11_8_2">§11.8.2</a>, <a href="4-rpt.html#SP11_8_2_5">§11.8.2.5</a><br/>Define by Table Requests - <a href="3-dbtr.html#SP4_1_3">§4.1.3</a>, <a href="3-dbtr.html#SP4_2_3_1">§4.2.3.1</a><br/>The Creator - <a href="4-tc.html#SP4_4">§4.4</a>, <a href="4-tc.html#SP4_4_1_1">§4.4.1.1</a><br/>Relation Knowledge - <a href="4-rk.html#SP2">§2</a><br/>Tables - <a href="5-tbl.html#SP22_1">§22.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eval</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::to_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">eval</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rpt.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Make a common or proper noun as appropriate</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -431,7 +431,7 @@ is allowed to stand.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="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">ActionPatterns::make_ACTION_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><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">ActionsNodes::convert_to_ACTION_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><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">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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>
|
||||
|
@ -799,7 +799,7 @@ here, given that we know we are looking for a noun.
|
|||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_article</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="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">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ActionPatterns::make_ACTION_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><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">ActionsNodes::convert_to_ACTION_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -73,7 +73,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">assertions</a></li><li><a href="index.html#4">Chapter 4: Assertions</a></li><li><b>The Creator</b></li></ul></div>
|
||||
<p class="purpose">This is where all objects, kinds of object, named values, kinds of value and global variables are made.</p>
|
||||
|
||||
<ul class="toc"><li><a href="4-tc.html#SP1">§1. Creations to match unrecognised names</a></li><li><a href="4-tc.html#SP5">§5. Acting on creations</a></li><li><a href="4-tc.html#SP8">§8. Creations to instantiate</a></li><li><a href="4-tc.html#SP12">§12. The natural language kind</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="4-tc.html#SP1">§1. Creations to match unrecognised names</a></li><li><a href="4-tc.html#SP4">§4. Acting on creations</a></li><li><a href="4-tc.html#SP7">§7. Creations to instantiate</a></li><li><a href="4-tc.html#SP11">§11. The natural language kind</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Creations to match unrecognised names. </b>The model contains objects, their properties and their relationships, and
|
||||
this section is where all of the objects are created — not only world
|
||||
|
@ -140,7 +140,7 @@ room."
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP5" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>§1.2. </b>More generally we need to work out what <span class="extract"><span class="extract-syntax">px</span></span> tells us about creations in <span class="extract"><span class="extract-syntax">py</span></span>,
|
||||
|
@ -164,55 +164,15 @@ in <span class="extract"><span class="extract-syntax">py</span></span>, which (i
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP1_2_1" class="named-paragraph-link"><span class="named-paragraph">Take care of two ambiguities to do with actions</span><span class="named-paragraph-number">1.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::creation</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">govx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">govy</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kindx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">kindy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP1_2_2" class="named-paragraph-link"><span class="named-paragraph">Work out the kinds of value expressed by each side, and find their governing nodes</span><span class="named-paragraph-number">1.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP5" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">kindy</span><span class="plain-syntax">, </span><span class="identifier-syntax">govy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP5" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">kindx</span><span class="plain-syntax">, </span><span class="identifier-syntax">govx</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP1_2_1" class="named-paragraph-link"><span class="named-paragraph">Work out the kinds of value expressed by each side, and find their governing nodes</span><span class="named-paragraph-number">1.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">kindy</span><span class="plain-syntax">, </span><span class="identifier-syntax">govy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">kindx</span><span class="plain-syntax">, </span><span class="identifier-syntax">govx</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1" class="paragraph-anchor"></a><b>§1.2.1. </b>The first case here is to take care of a sentence like:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>Taking something is proactive behaviour.</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">Here <span class="extract"><span class="extract-syntax">Refiner::refine</span></span> will correctly report that "proactive behaviour" is
|
||||
a new term, and give it a <span class="extract"><span class="extract-syntax">CREATED_NT</span></span> node. But we don't want it to become an
|
||||
object or a value — it will become a named kind of action instead. So we
|
||||
amend the node to <span class="extract"><span class="extract-syntax">ACTION_NT</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The second case occurs much less often — for instance, the only time it comes
|
||||
up in the test suite is in the example "Chronic Hinting Syndrome":
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>Setting is a kind of value. The settings are bright and dull.</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">Here the first sentence wants to create something called "setting", which
|
||||
ought to have a <span class="extract"><span class="extract-syntax">CREATED_NT</span></span> node type, but doesn't because it has been read
|
||||
as an action instead. We correct the spurious <span class="extract"><span class="extract-syntax">ACTION_NT</span></span> to a <span class="extract"><span class="extract-syntax">CREATED_NT</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Take care of two ambiguities to do with actions</span><span class="named-paragraph-number">1.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-tc.html#SP2" class="function-link"><span class="function-syntax">Assertions::Creator::actionlike</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CREATED_NT</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">ACTION_NT</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-tc.html#SP2" class="function-link"><span class="function-syntax">Assertions::Creator::actionlike</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">)) && (</span><a href="4-tc.html#SP2" class="function-link"><span class="function-syntax">Assertions::Creator::actionlike</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP2" class="function-link"><span class="function-syntax">Assertions::Creator::to_action_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP2" class="function-link"><span class="function-syntax">Assertions::Creator::to_action_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">) == </span><span class="identifier-syntax">ACTION_NT</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">) == </span><span class="identifier-syntax">KIND_NT</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">CREATED_NT</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2" class="paragraph-anchor"></a><b>§1.2.2. </b>There are two ways to know the kind being expressed. One is that the sentence
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1" class="paragraph-anchor"></a><b>§1.2.1. </b>There are two ways to know the kind being expressed. One is that the sentence
|
||||
makes unambiguous use of a relation which forces the kinds on each side. For
|
||||
example,
|
||||
</p>
|
||||
|
@ -242,12 +202,12 @@ kind of its second term. So we do so on its behalf.
|
|||
<p>Green is a colour.</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Work out the kinds of value expressed by each side, and find their governing nodes</span><span class="named-paragraph-number">1.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Work out the kinds of value expressed by each side, and find their governing nodes</span><span class="named-paragraph-number">1.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP3" class="function-link"><span class="function-syntax">Assertions::Creator::bp_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP3" class="function-link"><span class="function-syntax">Assertions::Creator::bp_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP2" class="function-link"><span class="function-syntax">Assertions::Creator::bp_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP2" class="function-link"><span class="function-syntax">Assertions::Creator::bp_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kindx</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::weaken</span><span class="plain-syntax">(</span><span class="identifier-syntax">BinaryPredicates::term_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kindy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::weaken</span><span class="plain-syntax">(</span><span class="identifier-syntax">BinaryPredicates::term_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">);</span>
|
||||
|
@ -257,97 +217,67 @@ kind of its second term. So we do so on its behalf.
|
|||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">kindx</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">kindy</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">kindx</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, &</span><span class="identifier-syntax">govx</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kindy</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, &</span><span class="identifier-syntax">govy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kindx</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP3" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, &</span><span class="identifier-syntax">govx</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kindy</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP3" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, &</span><span class="identifier-syntax">govy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::actionlike</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">Assertions::Creator::actionlike</span></span>:<br/><a href="4-tc.html#SP1_2_1">§1.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">ACTION_NT</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::to_action_node</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">Assertions::Creator::to_action_node</span></span>:<br/><a href="4-tc.html#SP1_2_1">§1.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">ACTION_NT</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ActionPatterns::make_ACTION_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_described</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"misapplied to_action_node"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>So that just leaves the algorithms for finding the relation of a subtree:
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>So that just leaves the algorithms for finding the relation of a subtree:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Assertions::Creator::bp_of_subtree</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">Assertions::Creator::bp_of_subtree</span></span>:<br/><a href="4-tc.html#SP1_2_2">§1.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Assertions::Creator::bp_of_subtree</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">Assertions::Creator::bp_of_subtree</span></span>:<br/><a href="4-tc.html#SP1_2_1">§1.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">RELATIONSHIP_NT</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_relationship</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>And the kind of a subtree.
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>And the kind of a subtree.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Assertions::Creator::kind_of_subtree</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">Assertions::Creator::kind_of_subtree</span></span>:<br/><a href="4-tc.html#SP1_2_2">§1.2.2</a>, <a href="4-tc.html#SP4_1">§4.1</a>, <a href="4-tc.html#SP5_2">§5.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">governing</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Assertions::Creator::kind_of_subtree</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">Assertions::Creator::kind_of_subtree</span></span>:<br/><a href="4-tc.html#SP1_2_1">§1.2.1</a>, <a href="4-tc.html#SP3_1">§3.1</a>, <a href="4-tc.html#SP4_2">§4.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">governing</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="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">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">AND_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Recurse downwards, preferring the leftmost item in a list</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">WITH_NT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">governing</span><span class="plain-syntax">); </span><span class="comment-syntax"> the owner, not the property</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">KIND_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Handle the kind of a "kind of..." clause</span><span class="named-paragraph-number">4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">AND_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Recurse downwards, preferring the leftmost item in a list</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">WITH_NT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-tc.html#SP3" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">governing</span><span class="plain-syntax">); </span><span class="comment-syntax"> the owner, not the property</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">KIND_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Handle the kind of a "kind of..." clause</span><span class="named-paragraph-number">3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_3" class="named-paragraph-link"><span class="named-paragraph">Kinds of variable and of value produce the obvious kind as result</span><span class="named-paragraph-number">4.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4" class="named-paragraph-link"><span class="named-paragraph">Initially values produce their own weakened kind</span><span class="named-paragraph-number">4.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_6" class="named-paragraph-link"><span class="named-paragraph">Descriptions produce the kind of whatever's described</span><span class="named-paragraph-number">4.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_5" class="named-paragraph-link"><span class="named-paragraph">Property names coinciding with kinds are considered with their kind meanings</span><span class="named-paragraph-number">4.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">Kinds of variable and of value produce the obvious kind as result</span><span class="named-paragraph-number">3.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP3_4" class="named-paragraph-link"><span class="named-paragraph">Initially values produce their own weakened kind</span><span class="named-paragraph-number">3.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP3_6" class="named-paragraph-link"><span class="named-paragraph">Descriptions produce the kind of whatever's described</span><span class="named-paragraph-number">3.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP3_5" class="named-paragraph-link"><span class="named-paragraph">Property names coinciding with kinds are considered with their kind meanings</span><span class="named-paragraph-number">3.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1" class="paragraph-anchor"></a><b>§4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Recurse downwards, preferring the leftmost item in a list</span><span class="named-paragraph-number">4.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP3_1" class="paragraph-anchor"></a><b>§3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Recurse downwards, preferring the leftmost item in a list</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">governing</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">governing</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP3" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">governing</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP3" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">governing</span><span 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</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">left</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">right</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2" class="paragraph-anchor"></a><b>§4.2. </b>Refinement has already parsed a KIND subtree and left the resulting domain
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_2" class="paragraph-anchor"></a><b>§3.2. </b>Refinement has already parsed a KIND subtree and left the resulting domain
|
||||
in the node's subject, so this case is easy.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle the kind of a "kind of..." clause</span><span class="named-paragraph-number">4.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle the kind of a "kind of..." clause</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">governing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">KindSubjects::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_3" class="paragraph-anchor"></a><b>§4.3. </b>Less surprisingly, "number that varies" and "number" return <span class="extract"><span class="extract-syntax">K_number</span></span>.
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_3" class="paragraph-anchor"></a><b>§3.3. </b>Less surprisingly, "number that varies" and "number" return <span class="extract"><span class="extract-syntax">K_number</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Kinds of variable and of value produce the obvious kind as result</span><span class="named-paragraph-number">4.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Kinds of variable and of value produce the obvious kind as result</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -364,8 +294,8 @@ in the node's subject, so this case is easy.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">found</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4" class="paragraph-anchor"></a><b>§4.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Initially values produce their own weakened kind</span><span class="named-paragraph-number">4.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_4" class="paragraph-anchor"></a><b>§3.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Initially values produce their own weakened kind</span><span class="named-paragraph-number">3.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -377,8 +307,8 @@ in the node's subject, so this case is easy.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_5" class="paragraph-anchor"></a><b>§4.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Property names coinciding with kinds are considered with their kind meanings</span><span class="named-paragraph-number">4.5</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_5" class="paragraph-anchor"></a><b>§3.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Property names coinciding with kinds are considered with their kind meanings</span><span class="named-paragraph-number">3.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -389,11 +319,11 @@ in the node's subject, so this case is easy.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ValueProperties::kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_6" class="paragraph-anchor"></a><b>§4.6. </b>And similarly "even number" returns <span class="extract"><span class="extract-syntax">K_number</span></span>.
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_6" class="paragraph-anchor"></a><b>§3.6. </b>And similarly "even number" returns <span class="extract"><span class="extract-syntax">K_number</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Descriptions produce the kind of whatever's described</span><span class="named-paragraph-number">4.6</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Descriptions produce the kind of whatever's described</span><span class="named-paragraph-number">3.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -402,8 +332,8 @@ in the node's subject, so this case is easy.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Acting on creations. </b>Building and refining the parse tree was a compositional process, in a linguistic
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Acting on creations. </b>Building and refining the parse tree was a compositional process, in a linguistic
|
||||
sense: what you do at any given position depends only on the current phrase and
|
||||
its contents, or equivalently, on the current node and its children.
|
||||
</p>
|
||||
|
@ -432,20 +362,20 @@ both of which are excised and replaced with <span class="extract"><span class="e
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">allow_tabular_definitions_from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::tabular_definitions</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">Assertions::Creator::tabular_definitions</span></span>:<br/>Define by Table Requests - <a href="3-dbtr.html#SP4_1_3">§4.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::tabular_definitions</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">Assertions::Creator::tabular_definitions</span></span>:<br/>Define by Table Requests - <a href="3-dbtr.html#SP4_1_3">§4.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">table</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">allow_tabular_definitions_from</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::noun_creator</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">Assertions::Creator::noun_creator</span></span>:<br/><a href="4-tc.html#SP1_1">§1.1</a>, <a href="4-tc.html#SP1_2">§1.2</a>, <a href="4-tc.html#SP5_2">§5.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">governor</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::noun_creator</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">Assertions::Creator::noun_creator</span></span>:<br/><a href="4-tc.html#SP1_1">§1.1</a>, <a href="4-tc.html#SP1_2">§1.2</a>, <a href="4-tc.html#SP4_2">§4.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">governor</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLED_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Check we are sure about this</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">; </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Perform creation on a CALLED node</span><span class="named-paragraph-number">5.2</span></a></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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CREATED_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Check we are sure about this</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">; </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Perform creation on a CREATED node</span><span class="named-paragraph-number">5.4</span></a></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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CALLED_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Check we are sure about this</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">; </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Perform creation on a CALLED node</span><span class="named-paragraph-number">4.2</span></a></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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CREATED_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Check we are sure about this</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">; </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4" class="named-paragraph-link"><span class="named-paragraph">Perform creation on a CREATED node</span><span class="named-paragraph-number">4.4</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ch</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">ch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">; </span><span class="identifier-syntax">ch</span><span class="plain-syntax">; </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ch</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) </span><a href="4-tc.html#SP5" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ch</span><span class="plain-syntax">, </span><span class="identifier-syntax">create_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">governor</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">ch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">; </span><span class="identifier-syntax">ch</span><span class="plain-syntax">; </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ch</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ch</span><span class="plain-syntax">, </span><span class="identifier-syntax">create_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">governor</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<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">Check we are sure about this</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1" class="paragraph-anchor"></a><b>§4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check we are sure about this</span><span class="named-paragraph-number">4.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -455,8 +385,8 @@ both of which are excised and replaced with <span class="extract"><span class="e
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"not that they don't."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a> (twice), <a href="4-tc.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_2" class="paragraph-anchor"></a><b>§5.2. </b>CALLED nodes allow a much more generous range of names to be used — that's
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4">§4</a> (twice), <a href="4-tc.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2" class="paragraph-anchor"></a><b>§4.2. </b>CALLED nodes allow a much more generous range of names to be used — that's
|
||||
the whole point of them. Really they contain the whole language in miniature,
|
||||
because a "called" clause can specify not only the name but also its kind,
|
||||
some properties which it has, and so forth. For example:
|
||||
|
@ -479,7 +409,7 @@ is important for sentences like:
|
|||
an object, but we know locally that Peter must further have the kind "man".
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Perform creation on a CALLED node</span><span class="named-paragraph-number">5.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Perform creation on a CALLED node</span><span class="named-paragraph-number">4.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -488,25 +418,25 @@ an object, but we know locally that Peter must further have the kind "man".
|
|||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">what_to_make_node</span><span class="plain-syntax">) != </span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">what_to_make_node</span><span class="plain-syntax">) != </span><span class="identifier-syntax">WITH_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_2_3" class="named-paragraph-link"><span class="named-paragraph">Complain that nothing else can be called</span><span class="named-paragraph-number">5.2.3</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_2_3" class="named-paragraph-link"><span class="named-paragraph">Complain that nothing else can be called</span><span class="named-paragraph-number">4.2.3</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local_governor</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local_create_as</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">what_to_make_node</span><span class="plain-syntax">, &</span><span class="identifier-syntax">local_governor</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local_create_as</span><span class="plain-syntax"> = </span><a href="4-tc.html#SP3" class="function-link"><span class="function-syntax">Assertions::Creator::kind_of_subtree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">what_to_make_node</span><span class="plain-syntax">, &</span><span class="identifier-syntax">local_governor</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">local_create_as</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">local_create_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">create_as</span><span class="plain-syntax">; </span><span class="identifier-syntax">local_governor</span><span class="plain-syntax"> = </span><span class="identifier-syntax">governor</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP5" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">called_name_node</span><span class="plain-syntax">, </span><span class="identifier-syntax">local_create_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">local_governor</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tc.html#SP4" class="function-link"><span class="function-syntax">Assertions::Creator::noun_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">called_name_node</span><span class="plain-syntax">, </span><span class="identifier-syntax">local_create_as</span><span class="plain-syntax">, </span><span class="identifier-syntax">local_governor</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_2_1" class="named-paragraph-link"><span class="named-paragraph">Replace the CALLED subtree with the new creation, mutatis mutandis</span><span class="named-paragraph-number">5.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_2_2" class="named-paragraph-link"><span class="named-paragraph">If the CALLED name used the definite article, make a note of that</span><span class="named-paragraph-number">5.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_2_1" class="named-paragraph-link"><span class="named-paragraph">Replace the CALLED subtree with the new creation, mutatis mutandis</span><span class="named-paragraph-number">4.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_2_2" class="named-paragraph-link"><span class="named-paragraph">If the CALLED name used the definite article, make a note of that</span><span class="named-paragraph-number">4.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_2_1" class="paragraph-anchor"></a><b>§5.2.1. </b>This is where we act on the miniature sentence implied by the CALLED
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_1" class="paragraph-anchor"></a><b>§4.2.1. </b>This is where we act on the miniature sentence implied by the CALLED
|
||||
subtree. We replace the subtree with a single node — the result of creation
|
||||
on the <span class="extract"><span class="extract-syntax">called_name_node</span></span> side — but then apply to it any kind, proposition
|
||||
or adjectives specified in the <span class="extract"><span class="extract-syntax">what_to_make_node</span></span> side.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Replace the CALLED subtree with the new creation, mutatis mutandis</span><span class="named-paragraph-number">5.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Replace the CALLED subtree with the new creation, mutatis mutandis</span><span class="named-paragraph-number">4.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -523,8 +453,8 @@ or adjectives specified in the <span class="extract"><span class="extract-syntax
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">what_to_make_node</span><span class="plain-syntax">) == </span><span class="identifier-syntax">WITH_NT</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pk.html#SP2" class="function-link"><span class="function-syntax">Assertions::PropertyKnowledge::assert_property_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">what_to_make_node</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_2">§5.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_2_2" class="paragraph-anchor"></a><b>§5.2.2. </b>Ordinarily the use of the definite article doesn't tell us much, but
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_2">§4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_2" class="paragraph-anchor"></a><b>§4.2.2. </b>Ordinarily the use of the definite article doesn't tell us much, but
|
||||
consider the following two sentences:
|
||||
</p>
|
||||
|
||||
|
@ -537,7 +467,7 @@ consider the following two sentences:
|
|||
is why the following only applies to those.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If the CALLED name used the definite article, make a note of that</span><span class="named-paragraph-number">5.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If the CALLED name used the definite article, make a note of that</span><span class="named-paragraph-number">4.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -551,12 +481,12 @@ is why the following only applies to those.)
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_2">§5.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_2_3" class="paragraph-anchor"></a><b>§5.2.3. </b>Note that even in this problem case, the <span class="extract"><span class="extract-syntax">CALLED_NT</span></span> node is removed. It
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_2">§4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_3" class="paragraph-anchor"></a><b>§4.2.3. </b>Note that even in this problem case, the <span class="extract"><span class="extract-syntax">CALLED_NT</span></span> node is removed. It
|
||||
disappears from the tree entirely when the creator has finished work.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Complain that nothing else can be called</span><span class="named-paragraph-number">5.2.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Complain that nothing else can be called</span><span class="named-paragraph-number">4.2.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -573,8 +503,8 @@ disappears from the tree entirely when the creator has finished work.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">called_name_node</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_2">§5.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_3" class="paragraph-anchor"></a><b>§5.3. </b>Names are not permitted to contain brackets, but we do allow them as an indicator
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_2">§4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_3" class="paragraph-anchor"></a><b>§4.3. </b>Names are not permitted to contain brackets, but we do allow them as an indicator
|
||||
of grammatical gender for languages other than English.
|
||||
</p>
|
||||
|
||||
|
@ -588,14 +518,14 @@ of grammatical gender for languages other than English.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">f</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4" class="paragraph-anchor"></a><b>§5.4. </b>That's it for callings; on to the main case, where we have a <span class="extract"><span class="Preform-extract-syntax">CREATED_NT</span></span>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4" class="paragraph-anchor"></a><b>§4.4. </b>That's it for callings; on to the main case, where we have a <span class="extract"><span class="Preform-extract-syntax">CREATED_NT</span></span>
|
||||
node which invites us to make something of it. In every case it becomes one
|
||||
of <span class="extract"><span class="Preform-extract-syntax">COMMON_NOUN_NT</span></span> (e.g., "Colour is a kind of value"); or <span class="extract"><span class="Preform-extract-syntax">PROPER_NOUN_NT</span></span>
|
||||
(e.g., "Miss Bianca is an animal"). Thus every <span class="extract"><span class="Preform-extract-syntax">CREATED_NT</span></span> node disappears
|
||||
from the tree.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Perform creation on a CREATED node</span><span class="named-paragraph-number">5.4</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Perform creation on a CREATED node</span><span class="named-paragraph-number">4.4</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -611,52 +541,52 @@ from the tree.
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> != </span><span class="identifier-syntax">INITIALLY_CE</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">recent_creation</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::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_1" class="named-paragraph-link"><span class="named-paragraph">Create an object or kind of object rather than a value</span><span class="named-paragraph-number">5.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_1" class="named-paragraph-link"><span class="named-paragraph">Create an object or kind of object rather than a value</span><span class="named-paragraph-number">4.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">recent_creation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-rpt.html#SP1" class="function-link"><span class="function-syntax">Refiner::give_subject_to_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">recent_creation</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">creation_site_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">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::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2" class="named-paragraph-link"><span class="named-paragraph">Create a value rather than an object</span><span class="named-paragraph-number">5.4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2" class="named-paragraph-link"><span class="named-paragraph">Create a value rather than an object</span><span class="named-paragraph-number">4.4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-rpt.html#SP1" class="function-link"><span class="function-syntax">Refiner::give_spec_to_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</span><span class="plain-syntax">) </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">creation_site_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>There now follows a pretty tedious trawl through reasons to object to names.
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>There now follows a pretty tedious trawl through reasons to object to names.
|
||||
The crash hieroglyphs exist only so that the Inform test suite can verify that
|
||||
it handles crashes correctly.
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><creation-problem-diagnosis></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><article></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-tc.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameIsArticle problem</span><span class="named-paragraph-number">6.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">(/)/(-</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameWithBrackets problem</span><span class="named-paragraph-number">6.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">(/)/(-</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameWithBrackets problem</span><span class="named-paragraph-number">6.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">(/)/(-</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameWithBrackets problem</span><span class="named-paragraph-number">6.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">ni--crash--1</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-tc.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Issue PM_Crash1 problem</span><span class="named-paragraph-number">6.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">ni--crash--10</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-tc.html#SP6_4" class="named-paragraph-link"><span class="named-paragraph">Issue PM_Crash10 problem</span><span class="named-paragraph-number">6.4</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">ni--crash--11</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-tc.html#SP6_5" class="named-paragraph-link"><span class="named-paragraph">Issue PM_Crash11 problem</span><span class="named-paragraph-number">6.5</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP6_6" class="named-paragraph-link"><span class="named-paragraph">Issue PM_StartsWithComma problem</span><span class="named-paragraph-number">6.6</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP6_7" class="named-paragraph-link"><span class="named-paragraph">Issue PM_EndsWithComma problem</span><span class="named-paragraph-number">6.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP6_8" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ObjectIncWhen problem</span><span class="named-paragraph-number">6.8</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP6_9" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameWithText problem</span><span class="named-paragraph-number">6.9</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">condition</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">conditions</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">storage</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">storages</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">variable</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">variables</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">property-value</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">property-values</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">table-reference</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">table-references</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">list-entry</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">list-entries</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-tc.html#SP6_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><article></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-tc.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameIsArticle problem</span><span class="named-paragraph-number">5.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">(/)/(-</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameWithBrackets problem</span><span class="named-paragraph-number">5.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">(/)/(-</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameWithBrackets problem</span><span class="named-paragraph-number">5.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">(/)/(-</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameWithBrackets problem</span><span class="named-paragraph-number">5.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">ni--crash--1</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-tc.html#SP5_3" class="named-paragraph-link"><span class="named-paragraph">Issue PM_Crash1 problem</span><span class="named-paragraph-number">5.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">ni--crash--10</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-tc.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Issue PM_Crash10 problem</span><span class="named-paragraph-number">5.4</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">ni--crash--11</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-tc.html#SP5_5" class="named-paragraph-link"><span class="named-paragraph">Issue PM_Crash11 problem</span><span class="named-paragraph-number">5.5</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_6" class="named-paragraph-link"><span class="named-paragraph">Issue PM_StartsWithComma problem</span><span class="named-paragraph-number">5.6</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_7" class="named-paragraph-link"><span class="named-paragraph">Issue PM_EndsWithComma problem</span><span class="named-paragraph-number">5.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_8" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ObjectIncWhen problem</span><span class="named-paragraph-number">5.8</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_9" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameWithText problem</span><span class="named-paragraph-number">5.9</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">condition</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">conditions</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">storage</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">storages</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">variable</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">variables</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">property-value</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">property-values</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">table-reference</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">table-references</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">list-entry</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">list-entries</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-tc.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></a></span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_1" class="paragraph-anchor"></a><b>§6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_NameIsArticle problem</span><span class="named-paragraph-number">6.1</span></span><span class="Preform-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">Issue PM_NameIsArticle problem</span><span class="named-paragraph-number">5.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -667,8 +597,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"the player sees as just 'A', you can get this effect with: 'A-Room is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"a room with printed name \"A\".')"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2" class="paragraph-anchor"></a><b>§6.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_NameWithBrackets problem</span><span class="named-paragraph-number">6.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_2" class="paragraph-anchor"></a><b>§5.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_NameWithBrackets problem</span><span class="named-paragraph-number">5.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -680,8 +610,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"effect with: 'Fillmore West is a room with printed name \"Fillmore "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"(West)\".')"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a> (three times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3" class="paragraph-anchor"></a><b>§6.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_Crash1 problem</span><span class="named-paragraph-number">6.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a> (three times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_3" class="paragraph-anchor"></a><b>§5.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_Crash1 problem</span><span class="named-paragraph-number">5.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -693,8 +623,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"If this is a genuine inconvenience to you, get in touch with my authors.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemSigils::exit</span><span class="plain-syntax">(1);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_4" class="paragraph-anchor"></a><b>§6.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_Crash10 problem</span><span class="named-paragraph-number">6.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4" class="paragraph-anchor"></a><b>§5.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_Crash10 problem</span><span class="named-paragraph-number">5.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -706,8 +636,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"If this is a genuine inconvenience to you, get in touch with my authors.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemSigils::exit</span><span class="plain-syntax">(10);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_5" class="paragraph-anchor"></a><b>§6.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_Crash11 problem</span><span class="named-paragraph-number">6.5</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5" class="paragraph-anchor"></a><b>§5.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_Crash11 problem</span><span class="named-paragraph-number">5.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -719,8 +649,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"If this is a genuine inconvenience to you, get in touch with my authors.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemSigils::exit</span><span class="plain-syntax">(11);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_6" class="paragraph-anchor"></a><b>§6.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_StartsWithComma problem</span><span class="named-paragraph-number">6.6</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_6" class="paragraph-anchor"></a><b>§5.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_StartsWithComma problem</span><span class="named-paragraph-number">5.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -731,8 +661,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"Inform generally doesn't like this because it reserves commas for "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"specific purposes such as dividing rules or 'if' phrases."</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_7" class="paragraph-anchor"></a><b>§6.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_EndsWithComma problem</span><span class="named-paragraph-number">6.7</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_7" class="paragraph-anchor"></a><b>§5.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_EndsWithComma problem</span><span class="named-paragraph-number">5.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -742,8 +672,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"Inform generally doesn't like this because it reserves commas for "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"specific purposes such as dividing rules or 'if' phrases."</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_8" class="paragraph-anchor"></a><b>§6.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ObjectIncWhen problem</span><span class="named-paragraph-number">6.8</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_8" class="paragraph-anchor"></a><b>§5.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ObjectIncWhen problem</span><span class="named-paragraph-number">5.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -766,8 +696,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"try something like: 'In the box is a thing called When worlds collide.'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_9" class="paragraph-anchor"></a><b>§6.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_NameWithText problem</span><span class="named-paragraph-number">6.9</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_9" class="paragraph-anchor"></a><b>§5.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_NameWithText problem</span><span class="named-paragraph-number">5.9</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -782,8 +712,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"because it finished with sentence-ending punctuation, when in "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"fact it didn't, so that I read the next words as following on."</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_10" class="paragraph-anchor"></a><b>§6.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_NameReserved problem</span><span class="named-paragraph-number">6.10</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_10" class="paragraph-anchor"></a><b>§5.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_NameReserved problem</span><span class="named-paragraph-number">5.10</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -795,8 +725,8 @@ it handles crashes correctly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"whatever you were making here, you'll need to call it something "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"else."</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP6">§6</a> (12 times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_1" class="paragraph-anchor"></a><b>§5.4.1. </b>At this point we do something that might look odd: we check to see if the
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5">§5</a> (12 times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_1" class="paragraph-anchor"></a><b>§4.4.1. </b>At this point we do something that might look odd: we check to see if the
|
||||
text of the <span class="extract"><span class="extract-syntax">CREATED_NT</span></span> node is the name of an object already. That seems
|
||||
pointless, since <span class="extract"><span class="extract-syntax">CREATED_NT</span></span> nodes are only made when a name is meaningless.
|
||||
But that was a little while ago, before we started to make creations within
|
||||
|
@ -828,7 +758,7 @@ to the same object.
|
|||
to abbreviated forms of object names are normally allowed.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create an object or kind of object rather than a value</span><span class="named-paragraph-number">5.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create an object or kind of object rather than a value</span><span class="named-paragraph-number">4.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -840,10 +770,10 @@ to abbreviated forms of object names are normally allowed.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">recent_creation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">recent_creation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_1_1" class="named-paragraph-link"><span class="named-paragraph">Actually create a fresh object</span><span class="named-paragraph-number">5.4.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">recent_creation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_1_1" class="named-paragraph-link"><span class="named-paragraph">Actually create a fresh object</span><span class="named-paragraph-number">4.4.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4">§5.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_1_1" class="paragraph-anchor"></a><b>§5.4.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Actually create a fresh object</span><span class="named-paragraph-number">5.4.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4">§4.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_1_1" class="paragraph-anchor"></a><b>§4.4.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Actually create a fresh object</span><span class="named-paragraph-number">4.4.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -887,40 +817,40 @@ to abbreviated forms of object names are normally allowed.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">creation_site_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_1">§5.4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2" class="paragraph-anchor"></a><b>§5.4.2. </b>Something of a rag-bag, this: it's everything else that can be created.
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_1">§4.4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2" class="paragraph-anchor"></a><b>§4.4.2. </b>Something of a rag-bag, this: it's everything else that can be created.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a value rather than an object</span><span class="named-paragraph-number">5.4.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a value rather than an object</span><span class="named-paragraph-number">4.4.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">governing_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">governor</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">governor</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">governor</span><span class="plain-syntax">) == </span><span class="identifier-syntax">KIND_NT</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2_1" class="named-paragraph-link"><span class="named-paragraph">Create a new kind of value</span><span class="named-paragraph-number">5.4.2.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2_1" class="named-paragraph-link"><span class="named-paragraph">Create a new kind of value</span><span class="named-paragraph-number">4.4.2.1</span></a></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">Specifications::is_new_variable_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">governing_spec</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> == </span><span class="identifier-syntax">INITIALLY_CE</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2_2" class="named-paragraph-link"><span class="named-paragraph">Create a new variable</span><span class="named-paragraph-number">5.4.2.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2_2" class="named-paragraph-link"><span class="named-paragraph">Create a new variable</span><span class="named-paragraph-number">4.4.2.2</span></a></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">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_rulebook</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2_4" class="named-paragraph-link"><span class="named-paragraph">Create a new rulebook</span><span class="named-paragraph-number">5.4.2.4</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2_4" class="named-paragraph-link"><span class="named-paragraph">Create a new rulebook</span><span class="named-paragraph-number">4.4.2.4</span></a></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">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2_5" class="named-paragraph-link"><span class="named-paragraph">Create a new activity</span><span class="named-paragraph-number">5.4.2.5</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2_5" class="named-paragraph-link"><span class="named-paragraph">Create a new activity</span><span class="named-paragraph-number">4.4.2.5</span></a></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">Kinds::Behaviour::definite</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Kinds::Behaviour::is_quasinumerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2_6" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for trying to create an instance of a unit</span><span class="named-paragraph-number">5.4.2.6</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2_6" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for trying to create an instance of a unit</span><span class="named-paragraph-number">4.4.2.6</span></a></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">Kinds::Behaviour::definite</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">RTKinds::defined_by_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">RTKinds::defined_by_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">) != </span><span class="identifier-syntax">allow_tabular_definitions_from</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2_7" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for trying to create an instance of a table-defined kind</span><span class="named-paragraph-number">5.4.2.7</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2_7" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for trying to create an instance of a table-defined kind</span><span class="named-paragraph-number">4.4.2.7</span></a></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">Kinds::Behaviour::definite</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Kinds::Behaviour::has_named_constant_values</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_as</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2_3" class="named-paragraph-link"><span class="named-paragraph">Create an instance of an enumerated kind</span><span class="named-paragraph-number">5.4.2.3</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2_3" class="named-paragraph-link"><span class="named-paragraph">Create an instance of an enumerated kind</span><span class="named-paragraph-number">4.4.2.3</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2_8" class="named-paragraph-link"><span class="named-paragraph">Issue an unable-to-create problem message</span><span class="named-paragraph-number">5.4.2.8</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2_8" class="named-paragraph-link"><span class="named-paragraph">Issue an unable-to-create problem message</span><span class="named-paragraph-number">4.4.2.8</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::position_of_symbol</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">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4">§5.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2_1" class="paragraph-anchor"></a><b>§5.4.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a new kind of value</span><span class="named-paragraph-number">5.4.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4">§4.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2_1" class="paragraph-anchor"></a><b>§4.4.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a new kind of value</span><span class="named-paragraph-number">4.4.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -929,8 +859,8 @@ to abbreviated forms of object names are normally allowed.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Assert::true</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">latest_base_kind_of_value</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_2">§5.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2_2" class="paragraph-anchor"></a><b>§5.4.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a new variable</span><span class="named-paragraph-number">5.4.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_2">§4.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2_2" class="paragraph-anchor"></a><b>§4.4.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a new variable</span><span class="named-paragraph-number">4.4.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -940,7 +870,7 @@ to abbreviated forms of object names are normally allowed.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_new_variable_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">governing_spec</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">domain</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::kind_of_new_variable_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">governing_spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::contains</span><span class="plain-syntax">(</span><span class="identifier-syntax">domain</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">))))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_4_2_2_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for topics that vary</span><span class="named-paragraph-number">5.4.2.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_4_2_2_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for topics that vary</span><span class="named-paragraph-number">4.4.2.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="6-cu.html#SP1" class="function-link"><span class="function-syntax">Propositions::Abstract::to_create_something</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">domain</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::concatenate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><a href="6-cu.html#SP1" class="function-link"><span class="function-syntax">Propositions::Abstract::to_make_a_const</span></a><span class="plain-syntax">());</span>
|
||||
|
@ -950,8 +880,8 @@ to abbreviated forms of object names are normally allowed.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">NonlocalVariables::get_latest</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">"failed to create"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lvalues::new_actual_NONLOCAL_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">NonlocalVariables::get_latest</span><span class="plain-syntax">());</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_2">§5.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2_3" class="paragraph-anchor"></a><b>§5.4.2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create an instance of an enumerated kind</span><span class="named-paragraph-number">5.4.2.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_2">§4.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2_3" class="paragraph-anchor"></a><b>§4.4.2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create an instance of an enumerated kind</span><span class="named-paragraph-number">4.4.2.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -961,14 +891,14 @@ to abbreviated forms of object names are normally allowed.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Assert::true</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::latest</span><span class="plain-syntax">());</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_2">§5.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2_4" class="paragraph-anchor"></a><b>§5.4.2.4. </b>Lastly: rulebooks and activities are not part of the model, because they would
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_2">§4.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2_4" class="paragraph-anchor"></a><b>§4.4.2.4. </b>Lastly: rulebooks and activities are not part of the model, because they would
|
||||
make it enormously larger, and because they describe only the run-time evolution
|
||||
of the state of play and have no effect on the initial state. So we don't create
|
||||
them by asserting propositions to be true; we act directly.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a new rulebook</span><span class="named-paragraph-number">5.4.2.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a new rulebook</span><span class="named-paragraph-number">4.4.2.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -986,8 +916,8 @@ them by asserting propositions to be true; we act directly.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_rulebook</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">clears_pronouns_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_2">§5.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2_5" class="paragraph-anchor"></a><b>§5.4.2.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a new activity</span><span class="named-paragraph-number">5.4.2.5</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_2">§4.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2_5" class="paragraph-anchor"></a><b>§4.4.2.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a new activity</span><span class="named-paragraph-number">4.4.2.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -995,11 +925,11 @@ them by asserting propositions to be true; we act directly.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_activity</span><span class="plain-syntax">(</span><span class="identifier-syntax">av</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">clears_pronouns_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_2">§5.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2_2_1" class="paragraph-anchor"></a><b>§5.4.2.2.1. </b>And to wind up, sundry problem messages.
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_2">§4.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2_2_1" class="paragraph-anchor"></a><b>§4.4.2.2.1. </b>And to wind up, sundry problem messages.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem for topics that vary</span><span class="named-paragraph-number">5.4.2.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem for topics that vary</span><span class="named-paragraph-number">4.4.2.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1009,8 +939,8 @@ them by asserting propositions to be true; we act directly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"(This would cause too much ambiguity with text variables, whose values "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"look exactly the same.)"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_2_2">§5.4.2.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2_6" class="paragraph-anchor"></a><b>§5.4.2.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem for trying to create an instance of a unit</span><span class="named-paragraph-number">5.4.2.6</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_2_2">§4.4.2.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2_6" class="paragraph-anchor"></a><b>§4.4.2.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem for trying to create an instance of a unit</span><span class="named-paragraph-number">4.4.2.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1039,8 +969,8 @@ them by asserting propositions to be true; we act directly.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_2">§5.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2_7" class="paragraph-anchor"></a><b>§5.4.2.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem for trying to create an instance of a table-defined kind</span><span class="named-paragraph-number">5.4.2.7</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_2">§4.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2_7" class="paragraph-anchor"></a><b>§4.4.2.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem for trying to create an instance of a table-defined kind</span><span class="named-paragraph-number">4.4.2.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1057,12 +987,12 @@ them by asserting propositions to be true; we act directly.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"of a table (%4), not in isolated sentences like this one."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_2">§5.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4_2_8" class="paragraph-anchor"></a><b>§5.4.2.8. </b>This is often a problem already reported, so we issue a fresh message only
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_2">§4.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_4_2_8" class="paragraph-anchor"></a><b>§4.4.2.8. </b>This is often a problem already reported, so we issue a fresh message only
|
||||
if nothing has already been said:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue an unable-to-create problem message</span><span class="named-paragraph-number">5.4.2.8</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue an unable-to-create problem message</span><span class="named-paragraph-number">4.4.2.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1089,17 +1019,17 @@ if nothing has already been said:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP5_4_2">§5.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>It turns out to be useful to have the same policing rules elsewhere:
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP4_4_2">§4.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>It turns out to be useful to have the same policing rules elsewhere:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::vet_name</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">Assertions::Creator::vet_name</span></span>:<br/>Table Columns - <a href="5-tc.html#SP11_2">§11.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::vet_name</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">Assertions::Creator::vet_name</span></span>:<br/>Table Columns - <a href="5-tc.html#SP11_2">§11.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><creation-problem-diagnosis></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">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Creations to instantiate. </b>The <span class="extract"><span class="extract-syntax">COMMON_NOUN_NT</span></span> node sometimes means to talk about things in general,
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Creations to instantiate. </b>The <span class="extract"><span class="extract-syntax">COMMON_NOUN_NT</span></span> node sometimes means to talk about things in general,
|
||||
sometimes things in particular; consider the two sentences
|
||||
</p>
|
||||
|
||||
|
@ -1126,8 +1056,8 @@ object.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">name_stubs_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</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">Assertions::Creator::convert_instance_to_nounphrase</span></span>:<br/>Assertions - <a href="4-ass.html#SP1">§1</a>, <a href="4-ass.html#SP6_3_34_3">§6.3.34.3</a>, <a href="4-ass.html#SP6_3_34_5">§6.3.34.5</a>, <a href="4-ass.html#SP6_3_35">§6.3.35</a>, <a href="4-ass.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">hinge_relation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Check we are sure about this</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::convert_instance_to_nounphrase</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">Assertions::Creator::convert_instance_to_nounphrase</span></span>:<br/>Assertions - <a href="4-ass.html#SP1">§1</a>, <a href="4-ass.html#SP6_3_34_3">§6.3.34.3</a>, <a href="4-ass.html#SP6_3_34_5">§6.3.34.5</a>, <a href="4-ass.html#SP6_3_35">§6.3.35</a>, <a href="4-ass.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">hinge_relation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Check we are sure about this</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">confect_name_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">hinge_relation</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">BinaryPredicates::is_the_wrong_way_round</span><span class="plain-syntax">(</span><span class="identifier-syntax">hinge_relation</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hinge_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BinaryPredicates::get_reversal</span><span class="plain-syntax">(</span><span class="identifier-syntax">hinge_relation</span><span class="plain-syntax">);</span>
|
||||
|
@ -1140,7 +1070,7 @@ object.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><text-ending-with-a-calling></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">)); </span><span class="comment-syntax"> the text before the bracketed clause</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><text-ending-with-a-calling></span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">); </span><span class="comment-syntax"> the bracketed text</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><article></span><span class="plain-syntax">(</span><span class="identifier-syntax">CW</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for calling something an article</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for calling something an article</span><span class="named-paragraph-number">7.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -1149,16 +1079,16 @@ object.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance_kind</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">Kinds::Behaviour::has_named_constant_values</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance_kind</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Point out that it's impossible to create values implicitly for this kind</span><span class="named-paragraph-number">8.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Calculate the instance count, that is, the number of duplicates to be made</span><span class="named-paragraph-number">8.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Point out that it's impossible to create values implicitly for this kind</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP7_3" class="named-paragraph-link"><span class="named-paragraph">Calculate the instance count, that is, the number of duplicates to be made</span><span class="named-paragraph-number">7.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list_subtree</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">original_next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP8_4" class="named-paragraph-link"><span class="named-paragraph">Construct a list subtree containing the right number of duplicates</span><span class="named-paragraph-number">8.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP7_4" class="named-paragraph-link"><span class="named-paragraph">Construct a list subtree containing the right number of duplicates</span><span class="named-paragraph-number">7.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">list_subtree</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">original_next</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8_1" class="paragraph-anchor"></a><b>§8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Point out that it's impossible to create values implicitly for this kind</span><span class="named-paragraph-number">8.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP7_1" class="paragraph-anchor"></a><b>§7.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Point out that it's impossible to create values implicitly for this kind</span><span class="named-paragraph-number">7.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1173,8 +1103,8 @@ object.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">multiplicity_ANNOT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_2" class="paragraph-anchor"></a><b>§8.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem for calling something an article</span><span class="named-paragraph-number">8.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_2" class="paragraph-anchor"></a><b>§7.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem for calling something an article</span><span class="named-paragraph-number">7.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1186,8 +1116,8 @@ object.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"name, '%2', is just an article - this isn't allowed."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_3" class="paragraph-anchor"></a><b>§8.3. </b>Usually the instance count is 1, but noun phrases such as "six vehicles"
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_3" class="paragraph-anchor"></a><b>§7.3. </b>Usually the instance count is 1, but noun phrases such as "six vehicles"
|
||||
will raise it. The problem message here is almost a bit of social engineering:
|
||||
we just don't think you're implementing it right if you think you need more
|
||||
than 100 duplicate objects in one go. (Though it is true what the problem
|
||||
|
@ -1196,7 +1126,7 @@ message says about performance, too.)
|
|||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_DUPLICATES_AT_ONCE</span><span class="plain-syntax"> </span><span class="constant-syntax">100</span><span class="plain-syntax"> </span><span class="comment-syntax"> change the problem message below if this is changed</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Calculate the instance count, that is, the number of duplicates to be made</span><span class="named-paragraph-number">8.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Calculate the instance count, that is, the number of duplicates to be made</span><span class="named-paragraph-number">7.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1211,13 +1141,13 @@ message says about performance, too.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">MAX_DUPLICATES_AT_ONCE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_4" class="paragraph-anchor"></a><b>§8.4. </b>For instance, "six vehicles" would make a binary tree here in which the
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4" class="paragraph-anchor"></a><b>§7.4. </b>For instance, "six vehicles" would make a binary tree here in which the
|
||||
intermediate nodes are <span class="extract"><span class="extract-syntax">AND_NT</span></span> and the leaves <span class="extract"><span class="extract-syntax">PROPER_NOUN_NT</span></span>, each referring
|
||||
to a different vehicle object.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Construct a list subtree containing the right number of duplicates</span><span class="named-paragraph-number">8.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Construct a list subtree containing the right number of duplicates</span><span class="named-paragraph-number">7.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1225,7 +1155,7 @@ to a different vehicle object.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><=</span><span class="identifier-syntax">instance_count</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_instance</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP8_4_1" class="named-paragraph-link"><span class="named-paragraph">Fashion a new object matching the description in the COMMON NOUN node</span><span class="named-paragraph-number">8.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP7_4_1" class="named-paragraph-link"><span class="named-paragraph">Fashion a new object matching the description in the COMMON NOUN node</span><span class="named-paragraph-number">7.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> < </span><span class="identifier-syntax">instance_count</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type_and_clear_annotations</span><span class="plain-syntax">(</span><span class="identifier-syntax">attach_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">AND_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">attach_to</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">);</span>
|
||||
|
@ -1239,17 +1169,17 @@ to a different vehicle object.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_4_1" class="paragraph-anchor"></a><b>§8.4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Fashion a new object matching the description in the COMMON NOUN node</span><span class="named-paragraph-number">8.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4_1" class="paragraph-anchor"></a><b>§7.4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Fashion a new object matching the description in the COMMON NOUN node</span><span class="named-paragraph-number">7.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">named_after</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">NAW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">propriety</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP8_4_1_1" class="named-paragraph-link"><span class="named-paragraph">Confect a name for the new object, if that's the bag we're into</span><span class="named-paragraph-number">8.4.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-tc.html#SP7_4_1_1" class="named-paragraph-link"><span class="named-paragraph">Confect a name for the new object, if that's the bag we're into</span><span class="named-paragraph-number">7.4.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance_kind</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP8_4_1_2" class="named-paragraph-link"><span class="named-paragraph">Check that the new name is non-empty and distinct from all existing ones</span><span class="named-paragraph-number">8.4.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP7_4_1_2" class="named-paragraph-link"><span class="named-paragraph">Check that the new name is non-empty and distinct from all existing ones</span><span class="named-paragraph-number">7.4.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::truncate</span><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="constant-syntax">32</span><span class="plain-syntax">); </span><span class="comment-syntax"> truncate to the maximum length</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pz</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><a href="6-cu.html#SP1" class="function-link"><span class="function-syntax">Propositions::Abstract::to_create_something</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">instance_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">NW</span><span class="plain-syntax">);</span>
|
||||
|
@ -1270,13 +1200,13 @@ to a different vehicle object.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pz</span><span class="plain-syntax">, </span><span class="identifier-syntax">creation_site_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_coupling</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pz</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP8_4">§8.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_4_1_1" class="paragraph-anchor"></a><b>§8.4.1.1. </b>The following is used only in assemblies, where the instance count is always
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP7_4">§7.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4_1_1" class="paragraph-anchor"></a><b>§7.4.1.1. </b>The following is used only in assemblies, where the instance count is always
|
||||
1, and confects a name like "Cleopatra's nose" from an owner object, "Cleopatra",
|
||||
and an <span class="extract"><span class="extract-syntax">COMMON_NOUN_NT</span></span> node, "nose".
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Confect a name for the new object, if that's the bag we're into</span><span class="named-paragraph-number">8.4.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Confect a name for the new object, if that's the bag we're into</span><span class="named-paragraph-number">7.4.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1302,9 +1232,9 @@ and an <span class="extract"><span class="extract-syntax">COMMON_NOUN_NT</span><
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">feed_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::begin</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">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">CW</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"><possessive-third-person></span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">j</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP8_4_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Insert the appropriate possessive</span><span class="named-paragraph-number">8.4.1.1.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP7_4_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Insert the appropriate possessive</span><span class="named-paragraph-number">7.4.1.1.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><agent-pronoun></span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">j</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP8_4_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Insert the appropriate name</span><span class="named-paragraph-number">8.4.1.1.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-tc.html#SP7_4_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Insert the appropriate name</span><span class="named-paragraph-number">7.4.1.1.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">Feeds::feed_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">j</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
|
@ -1314,8 +1244,8 @@ and an <span class="extract"><span class="extract-syntax">COMMON_NOUN_NT</span><
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP8_4_1">§8.4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_4_1_1_1" class="paragraph-anchor"></a><b>§8.4.1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert the appropriate possessive</span><span class="named-paragraph-number">8.4.1.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP7_4_1">§7.4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4_1_1_1" class="paragraph-anchor"></a><b>§7.4.1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert the appropriate possessive</span><span class="named-paragraph-number">7.4.1.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1330,15 +1260,15 @@ and an <span class="extract"><span class="extract-syntax">COMMON_NOUN_NT</span><
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Feeds::feed_text_expanding_strings</span><span class="plain-syntax">(</span><span class="identifier-syntax">genitive_form</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">genitive_form</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP8_4_1_1">§8.4.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_4_1_1_2" class="paragraph-anchor"></a><b>§8.4.1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert the appropriate name</span><span class="named-paragraph-number">8.4.1.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP7_4_1_1">§7.4.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4_1_1_2" class="paragraph-anchor"></a><b>§7.4.1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert the appropriate name</span><span class="named-paragraph-number">7.4.1.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Feeds::feed_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP8_4_1_1">§8.4.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_4_1_2" class="paragraph-anchor"></a><b>§8.4.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that the new name is non-empty and distinct from all existing ones</span><span class="named-paragraph-number">8.4.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP7_4_1_1">§7.4.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4_1_2" class="paragraph-anchor"></a><b>§7.4.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that the new name is non-empty and distinct from all existing ones</span><span class="named-paragraph-number">7.4.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1356,8 +1286,8 @@ and an <span class="extract"><span class="extract-syntax">COMMON_NOUN_NT</span><
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">textual_count</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP8_4_1">§8.4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>This is how callings are parsed, both in assertions and conditions: that is,
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tc.html#SP7_4_1">§7.4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>This is how callings are parsed, both in assertions and conditions: that is,
|
||||
names occurring in noun phrases with the shape "blah blah (called the rhubarb
|
||||
rhubarb)". (For tedious reasons it would be inefficient to parse the second
|
||||
of these using the first.)
|
||||
|
@ -1372,7 +1302,7 @@ of these using the first.)
|
|||
<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-constant-syntax">called</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-constant-syntax">***</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Many names are rejected because they clash unfortunately with other things,
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Many names are rejected because they clash unfortunately with other things,
|
||||
or for other high-level reasons, but there are also some basic syntactic
|
||||
blunders. Most of the time those are caught by the Creator above, but in a few
|
||||
cases (declaring new figures, for instance) it's possible to get around
|
||||
|
@ -1399,11 +1329,11 @@ For example, property names can't be unsuitable, but they can be unfortunate.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><unsuitable-name></span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Which powers:
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Which powers:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::vet_name_for_noun</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">Assertions::Creator::vet_name_for_noun</span></span>:<br/>Pluralisation Requests - <a href="3-pr.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::vet_name_for_noun</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">Assertions::Creator::vet_name_for_noun</span></span>:<br/>Pluralisation Requests - <a href="3-pr.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><unfortunate-name></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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_NameBestAvoided</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"this is a name which is best avoided"</span><span class="plain-syntax">,</span>
|
||||
|
@ -1416,14 +1346,14 @@ For example, property names can't be unsuitable, but they can be unfortunate.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. The natural language kind. </b>Inform has a kind built in called "natural language", whose values are
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. The natural language kind. </b>Inform has a kind built in called "natural language", whose values are
|
||||
enumerated names: English language, French language, German language and so on.
|
||||
When the kind is created, the following routine makes these instances. We do
|
||||
this exactly as we would to create any other instance — we write a logical
|
||||
proposition claiming its existence, then assert it to be true.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">NOTIFY_NATURAL_LANGUAGE_KINDS_CALLBACK</span><span class="plain-syntax"> </span><a href="4-tc.html#SP12" class="function-link"><span class="function-syntax">Assertions::Creator::stock_nl_kind</span></a>
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">NOTIFY_NATURAL_LANGUAGE_KINDS_CALLBACK</span><span class="plain-syntax"> </span><a href="4-tc.html#SP11" class="function-link"><span class="function-syntax">Assertions::Creator::stock_nl_kind</span></a>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assertions::Creator::stock_nl_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -398,7 +398,7 @@ hasn't been created yet; but we'll catch it later.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><table-column-heading-bare></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-tc.html#SP7" class="function-link"><span class="function-syntax">Assertions::Creator::vet_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">tc</span><span class="plain-syntax"> = </span><a href="5-tc.html#SP4" class="function-link"><span class="function-syntax">Tables::Columns::new_table_column</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-tc.html#SP6" class="function-link"><span class="function-syntax">Assertions::Creator::vet_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">tc</span><span class="plain-syntax"> = </span><a href="5-tc.html#SP4" class="function-link"><span class="function-syntax">Tables::Columns::new_table_column</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tc.html#SP11">§11</a>.</li></ul>
|
||||
|
|
|
@ -79,19 +79,19 @@ their existence.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_make_a_kind</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">Propositions::Abstract::to_make_a_kind</span></span>:<br/>The Creator - <a href="4-tc.html#SP5_4_1_1">§5.4.1.1</a>, <a href="4-tc.html#SP5_4_2_1">§5.4.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_make_a_kind</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">Propositions::Abstract::to_make_a_kind</span></span>:<br/>The Creator - <a href="4-tc.html#SP4_4_1_1">§4.4.1.1</a>, <a href="4-tc.html#SP4_4_2_1">§4.4.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="6-tcp.html#SP4" class="function-link"><span class="function-syntax">CreationPredicates::is_a_kind_up</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Terms::new_variable</span><span class="plain-syntax">(0), </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_make_a_var</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Propositions::Abstract::to_make_a_var</span></span>:<br/>The Creator - <a href="4-tc.html#SP5_4_2_2">§5.4.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_make_a_var</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Propositions::Abstract::to_make_a_var</span></span>:<br/>The Creator - <a href="4-tc.html#SP4_4_2_2">§4.4.2.2</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">return</span><span class="plain-syntax"> </span><a href="6-tcp.html#SP4" class="function-link"><span class="function-syntax">CreationPredicates::is_a_var_up</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Terms::new_variable</span><span class="plain-syntax">(0));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_make_a_const</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">Propositions::Abstract::to_make_a_const</span></span>:<br/>The Creator - <a href="4-tc.html#SP5_4_2_2">§5.4.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_make_a_const</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">Propositions::Abstract::to_make_a_const</span></span>:<br/>The Creator - <a href="4-tc.html#SP4_4_2_2">§4.4.2.2</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">return</span><span class="plain-syntax"> </span><a href="6-tcp.html#SP4" class="function-link"><span class="function-syntax">CreationPredicates::is_a_const_up</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Terms::new_variable</span><span class="plain-syntax">(0));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_create_something</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">Propositions::Abstract::to_create_something</span></span>:<br/>New Property Requests - <a href="3-npr.html#SP5_11">§5.11</a><br/>The Creator - <a href="4-tc.html#SP5_4_1_1">§5.4.1.1</a>, <a href="4-tc.html#SP5_4_2_1">§5.4.2.1</a>, <a href="4-tc.html#SP5_4_2_2">§5.4.2.2</a>, <a href="4-tc.html#SP5_4_2_3">§5.4.2.3</a>, <a href="4-tc.html#SP8_4_1">§8.4.1</a>, <a href="4-tc.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Propositions::Abstract::to_create_something</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">Propositions::Abstract::to_create_something</span></span>:<br/>New Property Requests - <a href="3-npr.html#SP5_11">§5.11</a><br/>The Creator - <a href="4-tc.html#SP4_4_1_1">§4.4.1.1</a>, <a href="4-tc.html#SP4_4_2_1">§4.4.2.1</a>, <a href="4-tc.html#SP4_4_2_2">§4.4.2.2</a>, <a href="4-tc.html#SP4_4_2_3">§4.4.2.3</a>, <a href="4-tc.html#SP7_4_1">§7.4.1</a>, <a href="4-tc.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Atoms::QUANTIFIER_new</span><span class="plain-syntax">(</span><span class="identifier-syntax">exists_quantifier</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::concatenate</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">,</span>
|
||||
|
@ -120,7 +120,7 @@ their existence.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Abstract::assert_kind_of_subject</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">Propositions::Abstract::assert_kind_of_subject</span></span>:<br/>The Creator - <a href="4-tc.html#SP5_2_1">§5.2.1</a><br/>Assertions - <a href="4-ass.html#SP6_3_8">§6.3.8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inst</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Abstract::assert_kind_of_subject</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">Propositions::Abstract::assert_kind_of_subject</span></span>:<br/>The Creator - <a href="4-tc.html#SP4_2_1">§4.2.1</a><br/>Assertions - <a href="4-ass.html#SP6_3_8">§6.3.8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inst</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new</span><span class="plain-syntax">, </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subject_to</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">new</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindPredicates::new_atom</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">Terms::new_variable</span><span class="plain-syntax">(0));</span>
|
||||
|
|
|
@ -1142,9 +1142,9 @@ accordingly.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TRAVERSE_PROPOSITION</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">element</span><span class="plain-syntax"> == </span><span class="constant-syntax">PREDICATE_ATOM</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">arity</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><2; </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">Conditions::is_TEST_ACTION</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">constant</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">AConditions::is_action_TEST_VALUE</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">constant</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="identifier-syntax">constant</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Conditions::action_tested</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">constant</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AConditions::action_tested</span><span class="plain-syntax">(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-></span><span class="element-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">constant</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">prop</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
|
|
|
@ -72,7 +72,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">core</a></li><li><a href="index.html#3">Chapter 3: Plugins</a></li><li><b>Plugin Calls</b></li></ul></div>
|
||||
<p class="purpose">The interface between the main compiler and its plugins.</p>
|
||||
|
||||
<ul class="toc"><li><a href="3-pc.html#SP2">§2. Influencing core</a></li><li><a href="3-pc.html#SP3">§3. Influencing assertions</a></li><li><a href="3-pc.html#SP14">§14. Influencing values</a></li><li><a href="3-pc.html#SP17">§17. Influencing knowledge</a></li><li><a href="3-pc.html#SP30">§30. Influencing index</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="3-pc.html#SP2">§2. Influencing core</a></li><li><a href="3-pc.html#SP3">§3. Influencing assertions</a></li><li><a href="3-pc.html#SP16">§16. Influencing values</a></li><li><a href="3-pc.html#SP20">§20. Influencing knowledge</a></li><li><a href="3-pc.html#SP33">§33. Influencing index</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The following set of functions is an API for the main compiler to consult
|
||||
with the plugins; put another way, it is also an API for the plugins to
|
||||
|
@ -154,7 +154,32 @@ with the sentence.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">INTERVENE_IN_ASSERTION_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>Called from <a href="../assertions-module/4-tc.html" class="internal">The Creator (in assertions)</a> when an instance is being made in
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>Called from <a href="../assertions-module/4-tc.html" class="internal">The Creator (in assertions)</a> when a copular sentence may be
|
||||
creating something. For example, the actions plugin needs this.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">CREATION_PLUG</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PluginCalls::creation</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">CREATION_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Called from <a href="../assertions-module/4-ass.html" class="internal">Assertions (in assertions)</a> when an unfamiliar node type appears
|
||||
where a property value might be expected. For example, the actions plugin
|
||||
uses this to deal with setting a property to an <span class="extract"><span class="extract-syntax">ACTION_NT</span></span> node. To
|
||||
intervene, set the node specification using <a href="../assertions-module/4-rpt.html" class="internal">Refine Parse Tree (in assertions)</a>
|
||||
and return <span class="extract"><span class="extract-syntax">TRUE</span></span>; or return <span class="extract"><span class="extract-syntax">FALSE</span></span> to let nature take its course.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">UNUSUAL_PROPERTY_VALUE_PLUG</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PluginCalls::unusual_property_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">UNUSUAL_PROPERTY_VALUE_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>Called from <a href="../assertions-module/4-tc.html" class="internal">The Creator (in assertions)</a> when an instance is being made in
|
||||
an assembly, and its name may involve a genitive. For example, if the
|
||||
assembly says "every person has a nose", then normally this would be called
|
||||
something like "Mr Rogers's nose"; but the player plugin uses the following
|
||||
|
@ -169,7 +194,7 @@ to have "your nose" in the case of the player instance.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">IRREGULAR_GENITIVE_IN_ASSEMBLY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">genitive</span><span class="plain-syntax">, </span><span class="identifier-syntax">propriety</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Called from <a href="../assertions-module/2-bv.html" class="internal">Booting Verbs (in assertions)</a> to give each plugin a chance to
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Called from <a href="../assertions-module/2-bv.html" class="internal">Booting Verbs (in assertions)</a> to give each plugin a chance to
|
||||
create any special sentence meanings it would like to. For example, the
|
||||
sounds plugin defines a special form of assertion sentence this way. The
|
||||
plugin should always return <span class="extract"><span class="extract-syntax">FALSE</span></span>, since otherwise it may gazump other
|
||||
|
@ -183,7 +208,7 @@ plugins and cause them to stop working.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALLV</span><span class="plain-syntax">(</span><span class="constant-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>Called from <a href="../assertions-module/4-ass.html" class="internal">Assertions (in assertions)</a> when it seems that the author wants
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Called from <a href="../assertions-module/4-ass.html" class="internal">Assertions (in assertions)</a> when it seems that the author wants
|
||||
to create a property of something with a sentence like "A container has a
|
||||
number called security rating." A plugin can intervene and act on that,
|
||||
returning <span class="extract"><span class="extract-syntax">TRUE</span></span> to stop the usual machinery. For example, the actions
|
||||
|
@ -198,7 +223,7 @@ can be intercepted to create an action variable, not a property.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">OFFERED_PROPERTY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">what</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Called from <a href="../assertions-module/4-ass.html" class="internal">Assertions (in assertions)</a> when the specification pseudo-variable
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Called from <a href="../assertions-module/4-ass.html" class="internal">Assertions (in assertions)</a> when the specification pseudo-variable
|
||||
is about to be set for something; the plugin can then intercept this.
|
||||
</p>
|
||||
|
||||
|
@ -209,7 +234,7 @@ is about to be set for something; the plugin can then intercept this.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">OFFERED_SPECIFICATION_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Called from <a href="../assertions-module/4-rpt.html" class="internal">Refine Parse Tree (in assertions)</a> to ask plugins if a noun phrase
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>Called from <a href="../assertions-module/4-rpt.html" class="internal">Refine Parse Tree (in assertions)</a> to ask plugins if a noun phrase
|
||||
has a noun implicit within it, even though none is explicitly given. For
|
||||
example, the player plugin uses this to say that "initially carried" means
|
||||
"...by the player", and sets the subject of the node to be the player character
|
||||
|
@ -223,7 +248,7 @@ instance.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">REFINE_IMPLICIT_NOUN_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Called from <a href="../assertions-module/2-cs.html" class="internal">Classifying Sentences (in assertions)</a> to give plugins the chance
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Called from <a href="../assertions-module/2-cs.html" class="internal">Classifying Sentences (in assertions)</a> to give plugins the chance
|
||||
of an early look at a newly-read assertion. For example, the map plugin uses
|
||||
this to spot that a sentence will create a new direction.
|
||||
</p>
|
||||
|
@ -235,7 +260,7 @@ this to spot that a sentence will create a new direction.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_ASSERTION_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>Called from <a href="../assertions-module/6-terr.html" class="internal">The Equality Relation Revisited (in assertions)</a> when we have
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>Called from <a href="../assertions-module/6-terr.html" class="internal">The Equality Relation Revisited (in assertions)</a> when we have
|
||||
to decide if it's valid to ask or declare that two things are the same.
|
||||
Returning <span class="extract"><span class="extract-syntax">TRUE</span></span> says that it is always valid; returning <span class="extract"><span class="extract-syntax">FALSE</span></span> leaves
|
||||
it to the regular machinery. This plug can therefore only be used to permit
|
||||
|
@ -249,7 +274,7 @@ additional usages, not to restrict existing ones.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">TYPECHECK_EQUALITY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Called from <a href="../assertions-module/4-ass.html" class="internal">Assertions (in assertions)</a> to warn plugins that a variable
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>Called from <a href="../assertions-module/4-ass.html" class="internal">Assertions (in assertions)</a> to warn plugins that a variable
|
||||
is now being assigned a value by an explicit assertion sentence.
|
||||
</p>
|
||||
|
||||
|
@ -260,7 +285,21 @@ is now being assigned a value by an explicit assertion sentence.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">VARIABLE_VALUE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Influencing values. </b>Called from <a href="../values-module/2-rvl.html" class="internal">Rvalues (in values)</a> to allow plugins to compile rvalues in
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. Influencing values. </b>Called from <a href="../values-module/2-rvl.html" class="internal">Rvalues (in values)</a> to allow plugins to help decide whether values
|
||||
of the same kind would be equal if evaluated at runtime. For example, the
|
||||
"scenes" plugin uses this to determine if two <span class="extract"><span class="extract-syntax">K_scene</span></span> constants are equal.
|
||||
To make a decision, set <span class="extract"><span class="extract-syntax">rv</span></span> to either <span class="extract"><span class="extract-syntax">TRUE</span></span> or <span class="extract"><span class="extract-syntax">FALSE</span></span> and return <span class="extract"><span class="extract-syntax">TRUE</span></span>.
|
||||
To make no decision, return <span class="extract"><span class="extract-syntax">FALSE</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">COMPARE_CONSTANT_PLUG</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PluginCalls::compare_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">COMPARE_CONSTANT_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">c1</span><span class="plain-syntax">, </span><span class="identifier-syntax">c2</span><span class="plain-syntax">, </span><span class="identifier-syntax">rv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>Called from <a href="../values-module/2-rvl.html" class="internal">Rvalues (in values)</a> to allow plugins to compile rvalues in
|
||||
eccentric ways of their own: not in fact just for the whimsy of it, but to
|
||||
make it possible for plugins to support base kinds of their own. For example,
|
||||
the "actions" plugin needs this to deal with the "stored action" kind.
|
||||
|
@ -273,7 +312,7 @@ the "actions" plugin needs this to deal with the "stored action" kind.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">COMPILE_CONSTANT_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>Called from <a href="../values-module/2-spc.html" class="internal">Specifications (in values)</a> to ask if there is some reason why
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>Called from <a href="../values-module/2-spc.html" class="internal">Specifications (in values)</a> to ask if there is some reason why
|
||||
a rule about <span class="extract"><span class="extract-syntax">I1</span></span> should be thought broader in scope than one about <span class="extract"><span class="extract-syntax">I2</span></span>. This
|
||||
is used by the regions plugin when one is a sub-region of the other. This is
|
||||
expected to behave as a <span class="extract"><span class="extract-syntax">strcmp</span></span>-like sorting function, with a positive
|
||||
|
@ -287,7 +326,7 @@ return value saying <span class="extract"><span class="extract-syntax">I1</span>
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">MORE_SPECIFIC_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">I1</span><span class="plain-syntax">, </span><span class="identifier-syntax">I2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>Called from <a href="../values-module/4-cad.html" class="internal">Constants and Descriptions (in values)</a> to give plugins a chance
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>Called from <a href="../values-module/4-cad.html" class="internal">Constants and Descriptions (in values)</a> to give plugins a chance
|
||||
to parse text which might otherwise be meaningless (or mean something different)
|
||||
and make it a "composite noun-quantifier" such as "everywhere" or "nothing".
|
||||
The main compiler does not recognise "everywhere" because it has no concept
|
||||
|
@ -302,7 +341,7 @@ of space, but the spatial plugin does, and this is how.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PARSE_COMPOSITE_NQS_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">DW</span><span class="plain-syntax">, </span><span class="identifier-syntax">quantifier_used</span><span class="plain-syntax">, </span><span class="identifier-syntax">some_kind</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Influencing knowledge. </b>Called from <a href="../knowledge-module/5-tmw.html" class="internal">The Model World (in knowledge)</a> to invite the plugin to participate
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. Influencing knowledge. </b>Called from <a href="../knowledge-module/5-tmw.html" class="internal">The Model World (in knowledge)</a> to invite the plugin to participate
|
||||
in stages I to V of the completion process. This may involve using contextual
|
||||
reasoning to draw further inferences.
|
||||
</p>
|
||||
|
@ -314,7 +353,7 @@ reasoning to draw further inferences.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">COMPLETE_MODEL_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">stage</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>Called from <a href="../knowledge-module/4-is.html" class="internal">Inference Subjects (in knowledge)</a> to invite the plugin to
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>Called from <a href="../knowledge-module/4-is.html" class="internal">Inference Subjects (in knowledge)</a> to invite the plugin to
|
||||
create any additional inference subjects it might want to reason about. In
|
||||
practice, this tends to be used to create preliminary subjects to stand in
|
||||
for significant kinds before those kinds are ready to be created.
|
||||
|
@ -327,7 +366,7 @@ for significant kinds before those kinds are ready to be created.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALLV</span><span class="plain-syntax">(</span><span class="constant-syntax">CREATE_INFERENCE_SUBJECTS_PLUG</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>Called from <a href="../knowledge-module/5-ia.html" class="internal">Indefinite Appearance (in knowledge)</a> to ask the plugins what
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>Called from <a href="../knowledge-module/5-ia.html" class="internal">Indefinite Appearance (in knowledge)</a> to ask the plugins what
|
||||
inferences, if any, to draw from a double-quoted text standing as an entire
|
||||
sentence. The <span class="extract"><span class="extract-syntax">infs</span></span> is the subject which was being talked about at the time
|
||||
the text was quoted, and therefore presumably is what the text should describe.
|
||||
|
@ -340,7 +379,7 @@ the text was quoted, and therefore presumably is what the text should describe.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">DEFAULT_APPEARANCE_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">txt</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>Called from <a href="../knowledge-module/5-inf.html" class="internal">Inferences (in knowledge)</a> when an inference is drawn about
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>Called from <a href="../knowledge-module/5-inf.html" class="internal">Inferences (in knowledge)</a> when an inference is drawn about
|
||||
something. This does not, of course, necessarily mean that this will actually
|
||||
be the property of something: the inference might turn out to be mistaken. The
|
||||
mapping plugin uses this to infer further that if something is said to be a
|
||||
|
@ -354,7 +393,7 @@ map connection to somewhere else, then it is probably a room.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">INFERENCE_DRAWN_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a>. Early in the run, before some kinds
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a>. Early in the run, before some kinds
|
||||
are created, placeholder inference subjects are created to stand in for them;
|
||||
this call enables plugins to recognise certain texts as referring to those.
|
||||
</p>
|
||||
|
@ -366,7 +405,7 @@ this call enables plugins to recognise certain texts as referring to those.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NAME_TO_EARLY_INFS_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a> to warn plugins about a new kind,
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a> to warn plugins about a new kind,
|
||||
which in practice enables them to spot from the name that it is actually a kind
|
||||
they want to provide built-in support for: thus the actions plugin reacts to
|
||||
the name "stored action", for example. <span class="extract"><span class="extract-syntax">K</span></span> is the newcomer, <span class="extract"><span class="extract-syntax">super</span></span> its super-kind,
|
||||
|
@ -382,7 +421,7 @@ source text (such as "container").
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">d</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>Called from <a href="../knowledge-module/2-ins.html" class="internal">Instances (in knowledge)</a> to warn plugins that a new instance has
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. </b>Called from <a href="../knowledge-module/2-ins.html" class="internal">Instances (in knowledge)</a> to warn plugins that a new instance has
|
||||
been created. For example, the figures plugin needs to know this so that it
|
||||
can see when a new illustration has been created.
|
||||
</p>
|
||||
|
@ -399,7 +438,7 @@ sure you're not dealing with an object.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_INSTANCE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">nc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>Called from <a href="../knowledge-module/4-pp.html" class="internal">Property Permissions (in knowledge)</a> to warn plugins that a subject
|
||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. </b>Called from <a href="../knowledge-module/4-pp.html" class="internal">Property Permissions (in knowledge)</a> to warn plugins that a subject
|
||||
has been given permission to hold a property; the parsing plugin, for example,
|
||||
uses this to attach a visibility flag.
|
||||
</p>
|
||||
|
@ -411,7 +450,7 @@ uses this to attach a visibility flag.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_PERMISSION_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b>Called from <a href="../knowledge-module/3-prp.html" class="internal">Properties (in knowledge)</a> to warn plugins that a property has
|
||||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. </b>Called from <a href="../knowledge-module/3-prp.html" class="internal">Properties (in knowledge)</a> to warn plugins that a property has
|
||||
been created, which they can use to spot properties with special significance
|
||||
to them.
|
||||
</p>
|
||||
|
@ -423,7 +462,7 @@ to them.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_PROPERTY_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. </b>Called from <a href="../knowledge-module/4-is.html" class="internal">Inference Subjects (in knowledge)</a> to warn plugins that a subject
|
||||
<p class="commentary firstcommentary"><a id="SP29" class="paragraph-anchor"></a><b>§29. </b>Called from <a href="../knowledge-module/4-is.html" class="internal">Inference Subjects (in knowledge)</a> to warn plugins that a subject
|
||||
has been created, which they can use to spot subjects with special significance
|
||||
to them.
|
||||
</p>
|
||||
|
@ -435,7 +474,7 @@ to them.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_SUBJECT_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. </b>Called from <a href="../knowledge-module/2-nv.html" class="internal">Nonlocal Variables (in knowledge)</a> to warn plugins that a new
|
||||
<p class="commentary firstcommentary"><a id="SP30" class="paragraph-anchor"></a><b>§30. </b>Called from <a href="../knowledge-module/2-nv.html" class="internal">Nonlocal Variables (in knowledge)</a> to warn plugins that a new
|
||||
variable has been created, which they can use to spot variables with special
|
||||
significance to them.
|
||||
</p>
|
||||
|
@ -447,7 +486,7 @@ significance to them.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_VARIABLE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. </b>Called from <a href="../knowledge-module/2-ins.html" class="internal">Instances (in knowledge)</a> to warn plugins that the kind of an
|
||||
<p class="commentary firstcommentary"><a id="SP31" class="paragraph-anchor"></a><b>§31. </b>Called from <a href="../knowledge-module/2-ins.html" class="internal">Instances (in knowledge)</a> to warn plugins that the kind of an
|
||||
instance is about to be set. This happens most often when the instance is
|
||||
created, but can also happen again, refining the kind to a subkind, when
|
||||
the instance is an object.
|
||||
|
@ -460,7 +499,7 @@ the instance is an object.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">SET_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP29" class="paragraph-anchor"></a><b>§29. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a> when one kind of object is made a
|
||||
<p class="commentary firstcommentary"><a id="SP32" class="paragraph-anchor"></a><b>§32. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a> when one kind of object is made a
|
||||
subkind of another, as for example when "container" is a made a subkind of
|
||||
"thing". The plugin should return <span class="extract"><span class="extract-syntax">TRUE</span></span> if it wishes to forbid this,
|
||||
and if so, it had better throw a problem message, or the user will be
|
||||
|
@ -478,7 +517,7 @@ regions plugin does with the "region" kind.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">SET_SUBKIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">super</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP30" class="paragraph-anchor"></a><b>§30. Influencing index. </b>Called from <a href="../index-module/2-ipw.html" class="internal">Index Physical World (in index)</a> to add something (if it wishes)
|
||||
<p class="commentary firstcommentary"><a id="SP33" class="paragraph-anchor"></a><b>§33. Influencing index. </b>Called from <a href="../index-module/2-ipw.html" class="internal">Index Physical World (in index)</a> to add something (if it wishes)
|
||||
to the index description of an instance in the spatial model. For example,
|
||||
the regions plugin uses this to put colour chips next to names of regions.
|
||||
</p>
|
||||
|
@ -490,7 +529,7 @@ the regions plugin uses this to put colour chips next to names of regions.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">ADD_TO_WORLD_INDEX_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">O</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP31" class="paragraph-anchor"></a><b>§31. </b>Called from <a href="../index-module/2-ipw.html" class="internal">Index Physical World (in index)</a> to add something (if it wishes)
|
||||
<p class="commentary firstcommentary"><a id="SP34" class="paragraph-anchor"></a><b>§34. </b>Called from <a href="../index-module/2-ipw.html" class="internal">Index Physical World (in index)</a> to add something (if it wishes)
|
||||
to the textual description of an instance in the spatial model. For example,
|
||||
the mapping plugin uses this to say where a door leads.
|
||||
</p>
|
||||
|
|
|
@ -89,6 +89,7 @@ to non-trivial functions as well as tables of data.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_PROPERTY_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="3-scn.html#SP9" class="function-link"><span class="function-syntax">Scenes::new_property_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_INSTANCE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="3-scn.html#SP6" class="function-link"><span class="function-syntax">Scenes::new_named_instance_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="3-scn.html#SP5" class="function-link"><span class="function-syntax">Scenes::new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPARE_CONSTANT_PLUG</span><span class="plain-syntax">, </span><a href="3-scn.html#SP5" class="function-link"><span class="function-syntax">Scenes::compare_CONSTANT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="3-scn.html#SP16" class="function-link"><span class="function-syntax">Scenes::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -140,13 +141,25 @@ Inter identifier <span class="extract"><span class="extract-syntax">SCENE_TY</sp
|
|||
<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">Scenes::compare_CONSTANT</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">Scenes::compare_CONSTANT</span></span>:<br/><a href="3-scn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_scene</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-ak.html#SP7" class="function-link"><span class="function-syntax">ARvalues::to_scene</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">) == </span><a href="4-ak.html#SP7" class="function-link"><span class="function-syntax">ARvalues::to_scene</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b><a href="3-scn.html#SP10" class="internal">scene</a> structures are automatically created whenever a new instance of the
|
||||
kind "scene" is created, and this is where that happens.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_named_instance_notify</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">Scenes::new_named_instance_notify</span></span>:<br/><a href="3-scn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_named_instance_notify</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">Scenes::new_named_instance_notify</span></span>:<br/><a href="3-scn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_scene</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_scene</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-scn.html#SP12" class="function-link"><span class="function-syntax">Scenes::new_scene</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -173,7 +186,7 @@ Standard Rules. (So there is no need to translate this to other languages.)
|
|||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_property_notify</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">Scenes::new_property_notify</span></span>:<br/><a href="3-scn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_property_notify</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">Scenes::new_property_notify</span></span>:<br/><a href="3-scn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</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"><notable-scene-properties>(prn-></span><span class="element-syntax">name</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">P_recurring</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -227,7 +240,7 @@ scenes — to express which, the <a href="3-scn.html#SP10" class="internal">
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">as_instance</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure scene is private to this section.</li><li>The structure scene_end is private to this section.</li><li>The structure scene_connector is accessed in 2/ri, 3/tm, 3/ts, 4/ap, 4/av, 4/ap2, 4/apc, 5/tfg, 5/gl and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure scene is private to this section.</li><li>The structure scene_end is private to this section.</li><li>The structure scene_connector is accessed in 2/ri, 3/tm, 3/ts, 4/ap, 4/av, 4/ap2, 4/ea, 4/apc, 5/tfg, 5/gl and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>A plugin called <span class="extract"><span class="extract-syntax">xyzzy</span></span> generally has a hunk of subject data called <span class="extract"><span class="extract-syntax">xyzzy_data</span></span>,
|
||||
so we would normally have a structure called <span class="extract"><span class="extract-syntax">scenes_data</span></span>, but in fact that
|
||||
structure is just going to be <a href="3-scn.html#SP10" class="internal">scene</a>. So:
|
||||
|
@ -241,7 +254,7 @@ is created:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_scene</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">Scenes::new_scene</span></span>:<br/><a href="3-scn.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_scene</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">Scenes::new_scene</span></span>:<br/><a href="3-scn.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">scene</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-scn.html#SP12_3" class="named-paragraph-link"><span class="named-paragraph">Connect the scene structure to the instance</span><span class="named-paragraph-number">12.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-scn.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Initialise the scene structure</span><span class="named-paragraph-number">12.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -289,7 +302,7 @@ to translate this to other languages.)
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="function-syntax">Scenes::from_named_constant</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">Scenes::from_named_constant</span></span>:<br/><a href="3-scn.html#SP23_1">§23.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="function-syntax">Scenes::from_named_constant</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">Scenes::from_named_constant</span></span>:<br/><a href="3-scn.html#SP23_1">§23.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K_scene</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_scene</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_DATA_ON_SUBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">scenes</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_subject</span><span class="plain-syntax">);</span>
|
||||
|
@ -299,7 +312,7 @@ to translate this to other languages.)
|
|||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Creating and parsing ends. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::parse_scene_end_name</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">Scenes::parse_scene_end_name</span></span>:<br/><a href="3-scn.html#SP24">§24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">EW</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">create</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::parse_scene_end_name</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">Scenes::parse_scene_end_name</span></span>:<br/><a href="3-scn.html#SP24">§24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">EW</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">create</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=2; </span><span class="identifier-syntax">i</span><span class="function-syntax"><sc-></span><span class="element-syntax">no_ends</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">Wordings::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">EW</span><span class="plain-syntax">, </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">ends</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">end_names</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">i</span><span class="plain-syntax">;</span>
|
||||
|
@ -333,7 +346,7 @@ to translate this to other languages.)
|
|||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. Scene end rulebooks. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_scene_rulebook</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">Scenes::new_scene_rulebook</span></span>:<br/><a href="3-scn.html#SP12_1">§12.1</a>, <a href="3-scn.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_scene_rulebook</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">Scenes::new_scene_rulebook</span></span>:<br/><a href="3-scn.html#SP12_1">§12.1</a>, <a href="3-scn.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">RW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">AW</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="named-paragraph-container code-font"><a href="3-scn.html#SP15_1" class="named-paragraph-link"><span class="named-paragraph">Compose a name and alternate name for the new scene end rulebook</span><span class="named-paragraph-number">15.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
|
@ -415,7 +428,7 @@ assertion sentences to create them:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::make_special_meanings</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">Scenes::make_special_meanings</span></span>:<br/><a href="3-scn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::make_special_meanings</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">Scenes::make_special_meanings</span></span>:<br/><a href="3-scn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-scn.html#SP17" class="function-link"><span class="function-syntax">Scenes::begins_when_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-begins-when"</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-scn.html#SP18" class="function-link"><span class="function-syntax">Scenes::ends_when_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-ends-when"</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">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -425,7 +438,7 @@ assertion sentences to create them:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::begins_when_SMF</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">Scenes::begins_when_SMF</span></span>:<br/><a href="3-scn.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::begins_when_SMF</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">Scenes::begins_when_SMF</span></span>:<br/><a href="3-scn.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">SW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">task</span><span class="plain-syntax">) { </span><span class="comment-syntax"> "The Ballroom Scene begins when..."</span>
|
||||
|
@ -451,7 +464,7 @@ two noun phrases and sometimes three.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::ends_when_SMF</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">Scenes::ends_when_SMF</span></span>:<br/><a href="3-scn.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::ends_when_SMF</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">Scenes::ends_when_SMF</span></span>:<br/><a href="3-scn.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">SW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">O2W</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[2]):</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
|
@ -641,7 +654,7 @@ ends" the other end.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_scene_anchor</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">Scenes::new_scene_anchor</span></span>:<br/><a href="3-scn.html#SP17">§17</a>, <a href="3-scn.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">phase</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">given_end</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::new_scene_anchor</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">Scenes::new_scene_anchor</span></span>:<br/><a href="3-scn.html#SP17">§17</a>, <a href="3-scn.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">phase</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">given_end</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">this_scene</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> scene whose end is being caused: must be set</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax"> = -1; </span><span class="comment-syntax"> end which is being anchored: must be set</span>
|
||||
|
||||
|
|
106
docs/if-module/4-ac.html
Normal file
106
docs/if-module/4-ac.html
Normal file
|
@ -0,0 +1,106 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Action Conditions</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">if</span></a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Action Conditions' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Action Conditions</b></li></ul></div>
|
||||
<p class="purpose">A special condition for testing against action patterns.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">AConditions::new_action_TEST_VALUE</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">AConditions::new_action_TEST_VALUE</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</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">"null action pattern"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEST_VALUE_NT</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">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax"> = </span><a href="4-ak.html#SP6" class="function-link"><span class="function-syntax">ARvalues::from_action_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">AConditions::is_action_TEST_VALUE</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">AConditions::is_action_TEST_VALUE</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_VALUE_NT</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><a href="4-ak.html#SP6" class="function-link"><span class="function-syntax">ARvalues::to_action_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-ak.html#SP6" class="function-link"><span class="function-syntax">ARvalues::to_explicit_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">)))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">AConditions::action_tested</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">AConditions::action_tested</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ac.html#SP1" class="function-link"><span class="function-syntax">AConditions::is_action_TEST_VALUE</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"action improperly extracted"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ak.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresscurrent">ac</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-act.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -113,7 +113,7 @@ which had not actually been done since around 2008.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::act_new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::act_new</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP12">§12</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_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Actions::act_new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::act_new</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP8">§8</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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</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">Kinds::Behaviour::new_enumerated_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_action_name</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
@ -214,7 +214,7 @@ have to correspond to names referenced in <a href="../WorldModelKit/index.html"
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anaa.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-as.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ac.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-as.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
206
docs/if-module/4-ak.html
Normal file
206
docs/if-module/4-ak.html
Normal file
|
@ -0,0 +1,206 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Action Kinds</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">if</span></a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Action Kinds' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Action Kinds</b></li></ul></div>
|
||||
<p class="purpose">Three action-related kinds of value.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The following represent action names, stored actions and descriptions of
|
||||
actions respectively: see <a href="4-ap.html" class="internal">Actions Plugin</a> for what these terms mean.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_action_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_description_of_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>These are created by a Neptune file inside <a href="../WorldModelKit/index.html" class="internal">WorldModelKit</a>, and are
|
||||
recognised by their Inter identifiers:
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ARvalues::new_base_kind_notify</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">ARvalues::new_base_kind_notify</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_base</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"ACTION_NAME_TY"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_action_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"DESCRIPTION_OF_ACTION_TY"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_description_of_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"STORED_ACTION_TY"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>A stored action can always be compared to a gerund: for instance,
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>if the current action is taking something...</p>
|
||||
</blockquote>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ARvalues::actions_typecheck_equality</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">ARvalues::actions_typecheck_equality</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K2</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_description_of_action</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>All three of these kinds can have constant values. For an action name, these
|
||||
correspond simply to <a href="4-act.html#SP1" class="internal">action_name</a> objects:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::from_action_name</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">ARvalues::from_action_name</span></span>:<br/>Action Name Names - <a href="4-ann.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_action_name</span><span class="plain-syntax">) }</span>
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::to_action_name</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">ARvalues::to_action_name</span></span>:<br/><a href="4-ak.html#SP8">§8</a><br/>Actions Plugin - <a href="4-ap.html#SP5">§5</a><br/>Action Variables - <a href="4-av.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax">) }</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>When text is parsed to an action pattern, the result can be stored as a
|
||||
constant in two ways. If the pattern unambiguously describes a single explicit
|
||||
action, the result has the kind "stored action" and corresponds to an
|
||||
<a href="4-ea.html#SP1" class="internal">explicit_action</a> object; if the pattern is looser than that, the result
|
||||
is a "description of action" and correspond to an <a href="4-ap2.html#SP1" class="internal">action_pattern</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">For example, "taking the golden telephone" might be a <span class="extract"><span class="extract-syntax">K_stored_action</span></span>
|
||||
constant, but "doing something to the golden telephone" or "taking something"
|
||||
or "taking the golden telephone in the presence of Mr Wu" would all be
|
||||
<span class="extract"><span class="extract-syntax">K_description_of_action</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::from_action_pattern</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">ARvalues::from_action_pattern</span></span>:<br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP4">§4</a><br/>Action Conditions - <a href="4-ac.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</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_code</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">explicit_action</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><a href="4-ea.html#SP2" class="function-link"><span class="function-syntax">ExplicitActions::from_action_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, &</span><span class="identifier-syntax">failure_code</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ea</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_constant_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ea</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_description_of_action</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::to_action_pattern</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">ARvalues::to_action_pattern</span></span>:<br/>Action Conditions - <a href="4-ac.html#SP1">§1</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">) }</span>
|
||||
<span class="reserved-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::to_explicit_action</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">ARvalues::to_explicit_action</span></span>:<br/>Action Conditions - <a href="4-ac.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">explicit_action</span><span class="plain-syntax">) }</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Finally, for a named action pattern, constant values correspond to
|
||||
<a href="4-nap.html#SP1" class="internal">named_action_pattern</a> objects. These are actually never used at run-time
|
||||
and do not appear as rvalues in any permanent way inside the compiler, so
|
||||
the kind <span class="extract"><span class="extract-syntax">K_description_of_action</span></span> is given to them only on principle. If
|
||||
they were used as values, this is the kind we would probably give them.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::from_named_action_pattern</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">ARvalues::from_named_action_pattern</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">named_action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_description_of_action</span><span class="plain-syntax"> ) }</span>
|
||||
<span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::to_named_action_pattern</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">ARvalues::to_named_action_pattern</span></span>:<br/>Named Action Patterns - <a href="4-nap.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax">) }</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::from_grammar_verb</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">ARvalues::from_grammar_verb</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_4">§24.5.4</a><br/>Grammar Tokens - <a href="5-gt2.html#SP10_1">§10.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">grammar_verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">grammar_verb</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">) }</span>
|
||||
<span class="reserved-syntax">grammar_verb</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::to_grammar_verb</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">ARvalues::to_grammar_verb</span></span>:<br/>Parsing Plugin - <a href="5-pp.html#SP2">§2</a><br/>Grammar Tokens - <a href="5-gt2.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">grammar_verb</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::from_scene</span><span class="plain-syntax">(</span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">scene</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_scene</span><span class="plain-syntax">) }</span>
|
||||
<span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="function-syntax">ARvalues::to_scene</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">ARvalues::to_scene</span></span>:<br/>Scenes - <a href="3-scn.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">scene</span><span class="plain-syntax">) }</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>It's not useful to be able to compare description of action constants for
|
||||
equality in this sense. There would be a case for doing so with stored actions,
|
||||
but in practice there seems little need, so for the moment we do not.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ARvalues::compare_CONSTANT</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">ARvalues::compare_CONSTANT</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_action_name</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-ak.html#SP5" class="function-link"><span class="function-syntax">ARvalues::to_action_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">) == </span><a href="4-ak.html#SP5" class="function-link"><span class="function-syntax">ARvalues::to_action_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anaa.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresscurrent">ak</li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ac.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -103,15 +103,15 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">NodeType::new</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ACTION_NT"</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">INFTY</span><span class="plain-syntax">, </span><span class="identifier-syntax">L3_NCAT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ASSERT_NFLAG</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="constant-syntax">action_meaning_ANNOT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::write_action_meaning_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP5" class="function-link"><span class="function-syntax">ActionsNodes::write_action_meaning_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="constant-syntax">constant_action_name_ANNOT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::write_constant_action_name_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP5" class="function-link"><span class="function-syntax">ActionsNodes::write_constant_action_name_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="constant-syntax">constant_action_pattern_ANNOT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::write_constant_action_pattern_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP5" class="function-link"><span class="function-syntax">ActionsNodes::write_constant_action_pattern_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="constant-syntax">constant_explicit_action_ANNOT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::write_constant_explicit_action_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP5" class="function-link"><span class="function-syntax">ActionsNodes::write_constant_explicit_action_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::declare_type</span><span class="plain-syntax">(</span><span class="constant-syntax">constant_named_action_pattern_ANNOT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::write_constant_named_action_pattern_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP5" class="function-link"><span class="function-syntax">ActionsNodes::write_constant_named_action_pattern_ANNOT</span></a><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">action_meaning_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">action_meaning_ANNOT</span><span class="plain-syntax">);</span>
|
||||
|
@ -121,36 +121,119 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">constant_explicit_action_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>And for the debugging log:
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>ACTION nodes are converted from existing ones, not born:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_action_meaning_ANNOT</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ActionsNodes::write_action_meaning_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::convert_to_ACTION_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTION_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_action_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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">ActionsNodes::is_actionlike</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ActionsNodes::is_actionlike</span></span>:<br/><a href="4-anaa.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="constant-syntax">ACTION_NT</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">K_stored_action</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</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>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::convert_stored_action_constant</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">ActionsNodes::convert_stored_action_constant</span></span>:<br/><a href="4-anaa.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::convert_to_ACTION_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">as_described</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>The first case here is to take care of a sentence like:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>Taking something is proactive behaviour.</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">Here <span class="extract"><span class="extract-syntax">Refiner::refine</span></span> will correctly report that "proactive behaviour" is
|
||||
a new term, and give it a <span class="extract"><span class="extract-syntax">CREATED_NT</span></span> node. But we don't want it to become an
|
||||
object or a value — it will become a named kind of action instead. So we
|
||||
amend the node to <span class="extract"><span class="extract-syntax">ACTION_NT</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The second case occurs much less often — for instance, the only time it comes
|
||||
up in the test suite is in the example "Chronic Hinting Syndrome":
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>Setting is a kind of value. The settings are bright and dull.</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">Here the first sentence wants to create something called "setting", which
|
||||
ought to have a <span class="extract"><span class="extract-syntax">CREATED_NT</span></span> node type, but doesn't because it has been read
|
||||
as an action instead. We correct the spurious <span class="extract"><span class="extract-syntax">ACTION_NT</span></span> to a <span class="extract"><span class="extract-syntax">CREATED_NT</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::creation</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ActionsNodes::creation</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</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-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::is_actionlike</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CREATED_NT</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTION_NT</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-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::is_actionlike</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">)) && (</span><a href="4-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::is_actionlike</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::convert_stored_action_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP3" class="function-link"><span class="function-syntax">ActionsNodes::convert_stored_action_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">py</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">) == </span><span class="constant-syntax">ACTION_NT</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">) == </span><span class="identifier-syntax">KIND_NT</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">CREATED_NT</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">ActionsNodes::unusual_property_value_node</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">ActionsNodes::unusual_property_value_node</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">) == </span><span class="constant-syntax">ACTION_NT</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_action_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span 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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="4-ak.html#SP6" class="function-link"><span class="function-syntax">ARvalues::from_action_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Refiner::give_spec_to_noun</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>And for the debugging log:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_action_meaning_ANNOT</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">ActionsNodes::write_action_meaning_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_action_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {action meaning: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_action_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_constant_action_name_ANNOT</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">ActionsNodes::write_constant_action_name_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_constant_action_name_ANNOT</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">ActionsNodes::write_constant_action_name_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {action name: %W}"</span><span class="plain-syntax">, </span><a href="4-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::tensed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_constant_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">), </span><span class="identifier-syntax">IS_TENSE</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">ActionsNodes::write_constant_action_pattern_ANNOT</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ActionsNodes::write_constant_action_pattern_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_constant_action_pattern_ANNOT</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ActionsNodes::write_constant_action_pattern_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {action pattern: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_constant_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_constant_explicit_action_ANNOT</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">ActionsNodes::write_constant_explicit_action_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_constant_explicit_action_ANNOT</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">ActionsNodes::write_constant_explicit_action_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {explicit action: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_constant_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)-></span><span class="element-syntax">as_described</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_constant_named_action_pattern_ANNOT</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">ActionsNodes::write_constant_named_action_pattern_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_constant_named_action_pattern_ANNOT</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">ActionsNodes::write_constant_named_action_pattern_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_named_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {named action pattern: "</span><span class="plain-syntax">);</span>
|
||||
|
@ -160,7 +243,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresscurrent">anaa</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-act.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresscurrent">anaa</li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ak.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -183,12 +183,12 @@ is removed.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::mark_for_deletion</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::mark_for_deletion</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5">§23.5</a>, <a href="4-pap.html#SP23_5_6">§23.5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::mark_for_deletion</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::mark_for_deletion</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5">§24.5</a>, <a href="4-pap.html#SP24_5_6">§24.5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">X</span><span class="plain-syntax">) </span><span class="identifier-syntax">X</span><span class="plain-syntax">-></span><span class="element-syntax">marked_for_deletion</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to mark null entry for deletion"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::marked_for_deletion</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_6">§23.5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::marked_for_deletion</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::marked_for_deletion</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_6">§24.5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">X</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">X</span><span class="plain-syntax">-></span><span class="element-syntax">marked_for_deletion</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>
|
||||
|
@ -198,7 +198,7 @@ entries which fail to change the word position.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::remove_entries_marked_for_deletion</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::remove_entries_marked_for_deletion</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_7">§23.5.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::remove_entries_marked_for_deletion</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::remove_entries_marked_for_deletion</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_7">§24.5.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">entries</span><span class="plain-syntax">, *</span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">entry</span><span class="plain-syntax">; </span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">next_entry</span><span class="plain-syntax">) {</span>
|
||||
|
@ -325,7 +325,7 @@ anything" — a completely unrestricted action.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">anl_item</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::first_item</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::first_item</span></span>:<br/><a href="4-anl.html#SP14">§14</a><br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a><br/>Parse Action Patterns - <a href="4-pap.html#SP23_1">§23.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">anl_item</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::first_item</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::first_item</span></span>:<br/><a href="4-anl.html#SP14">§14</a><br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a><br/>Parse Action Patterns - <a href="4-pap.html#SP24_1">§24.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">list</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">entries</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &(</span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">entries</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -361,12 +361,12 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::nap</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::nap</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_6">§23.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::nap</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::nap</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_6">§24.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::action</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::action</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_4">§23.5.4</a>, <a href="4-pap.html#SP23_5_5">§23.5.5</a>, <a href="4-pap.html#SP23_5_6">§23.5.6</a>, <a href="4-pap.html#SP23_6">§23.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::action</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::action</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_4">§24.5.4</a>, <a href="4-pap.html#SP24_5_5">§24.5.5</a>, <a href="4-pap.html#SP24_5_6">§24.5.6</a>, <a href="4-pap.html#SP24_6">§24.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">action_listed</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -424,17 +424,17 @@ the text leading to a list:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviation_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::parc</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parc</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5">§23.5</a>, <a href="4-pap.html#SP23_5_1">§23.5.1</a>, <a href="4-pap.html#SP23_6">§23.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::parc</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parc</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5">§24.5</a>, <a href="4-pap.html#SP24_5_1">§24.5.1</a>, <a href="4-pap.html#SP24_6">§24.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::par</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::par</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_4">§23.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::par</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::par</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_4">§24.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parc</span><span class="plain-syntax"> > </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">parameter</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::in_clause</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::in_clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_4">§23.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::in_clause</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::in_clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_4">§24.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">in_clause</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -453,17 +453,17 @@ the text leading to a list:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::first_position</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::first_position</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5">§23.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::first_position</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::first_position</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5">§24.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">list</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">entries</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::word_position</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::word_position</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5">§23.5</a>, <a href="4-pap.html#SP23_5_1_1">§23.5.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::word_position</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::word_position</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5">§24.5</a>, <a href="4-pap.html#SP24_5_1_1">§24.5.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::same_word_position</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::same_word_position</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_6">§23.5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Y</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::same_word_position</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::same_word_position</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_6">§24.5.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Y</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Y</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Y</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">word_position</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -487,7 +487,7 @@ not a NAP.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::get_the_one_true_action</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::get_the_one_true_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::get_the_one_true_action</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::get_the_one_true_action</span></span>:<br/>Explicit Actions - <a href="4-ea.html#SP2">§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">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP14" class="function-link"><span class="function-syntax">ActionNameLists::single_positive_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Singleton ANL points to null AN"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">;</span>
|
||||
|
@ -505,7 +505,7 @@ is no best action. (For example, in "throwing or removing something".)
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::get_best_action</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::get_best_action</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_3">§23.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::get_best_action</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::get_best_action</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_3">§24.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">posn</span><span class="plain-syntax"> = -1, </span><span class="identifier-syntax">best_score</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">best</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::positive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -616,7 +616,7 @@ something other than something — or <span class="extract"><span class="ext
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::parse</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parse</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP20">§20</a>, <a href="4-pap.html#SP23_3">§23.3</a>, <a href="4-pap.html#SP23_4">§23.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sense</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::parse</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parse</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21">§21</a>, <a href="4-pap.html#SP24_3">§24.3</a>, <a href="4-pap.html#SP24_4">§24.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sense</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::mismatched_brackets</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tense</span><span class="plain-syntax">;</span>
|
||||
|
@ -905,7 +905,7 @@ the trial entry for future trials.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP24_1_3">§24.1.3</a> (three times).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ann.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresscurrent">anl</li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ap2.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ann.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresscurrent">anl</li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ap2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -111,7 +111,7 @@ action".
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WordAssemblages::from_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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">WordAssemblages::to_wording</span><span class="plain-syntax">(&</span><span class="identifier-syntax">wa</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">as_noun</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Nouns::new_proper_noun</span><span class="plain-syntax">(</span><span class="identifier-syntax">AW</span><span class="plain-syntax">, </span><span class="identifier-syntax">NEUTER_GENDER</span><span class="plain-syntax">, </span><span class="identifier-syntax">ADD_TO_LEXICON_NTOPT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">MISCELLANEOUS_MC</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::from_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">), </span><span class="identifier-syntax">Task::language_of_syntax</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">MISCELLANEOUS_MC</span><span class="plain-syntax">, </span><a href="4-ak.html#SP5" class="function-link"><span class="function-syntax">ARvalues::from_action_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">), </span><span class="identifier-syntax">Task::language_of_syntax</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Vocabulary::set_flags</span><span class="plain-syntax">(</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)), </span><span class="identifier-syntax">ACTION_PARTICIPLE_MC</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">an2</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">an2</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">)</span>
|
||||
|
@ -120,7 +120,7 @@ action".
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">it_optional</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an2</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">it_optional</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><a href="4-ap.html#SP8" class="function-link"><span class="function-syntax">ActionsPlugin::notice_new_action_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap.html#SP4" class="function-link"><span class="function-syntax">ActionsPlugin::notice_new_action_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>In the early days of Inform, past participles had to be set explicitly, and
|
||||
|
@ -129,7 +129,7 @@ enough that this is almost never used.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::set_irregular_past</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">ActionNameNames::set_irregular_past</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP13_3">§13.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::set_irregular_past</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">ActionNameNames::set_irregular_past</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP9_3">§9.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</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">Wordings::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_MultiwordPastParticiple</span><span class="plain-syntax">),</span>
|
||||
|
@ -148,7 +148,7 @@ enough that this is almost never used.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::tensed</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ActionNameNames::tensed</span></span>:<br/><a href="4-ann.html#SP10">§10</a>, <a href="4-ann.html#SP11">§11</a>, <a href="4-ann.html#SP13">§13</a><br/>Actions Plugin - <a href="4-ap.html#SP8">§8</a><br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP3">§3</a><br/>Actions - <a href="4-act.html#SP3">§3</a><br/>Action Semantics - <a href="4-as.html#SP6_1">§6.1</a><br/>Action Name Lists - <a href="4-anl.html#SP17">§17</a>, <a href="4-anl.html#SP24_1_2">§24.1.2</a><br/>Going - <a href="4-gng.html#SP2">§2</a><br/>Grammar Lines - <a href="5-gl.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::tensed</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ActionNameNames::tensed</span></span>:<br/><a href="4-ann.html#SP10">§10</a>, <a href="4-ann.html#SP11">§11</a>, <a href="4-ann.html#SP13">§13</a><br/>Actions Plugin - <a href="4-ap.html#SP4">§4</a><br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP5">§5</a><br/>Actions - <a href="4-act.html#SP3">§3</a><br/>Action Semantics - <a href="4-as.html#SP6_1">§6.1</a><br/>Action Name Lists - <a href="4-anl.html#SP17">§17</a>, <a href="4-anl.html#SP24_1_2">§24.1.2</a><br/>Going - <a href="4-gng.html#SP2">§2</a><br/>Grammar Lines - <a href="5-gl.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">present_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">HASBEEN_TENSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">past_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"action tense unsupported"</span><span class="plain-syntax">);</span>
|
||||
|
@ -215,7 +215,7 @@ preposition can be abbreviated is under the author's control:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">it_optional</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::make_abbreviable</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">ActionNameNames::make_abbreviable</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP13_2">§13.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::make_abbreviable</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">ActionNameNames::make_abbreviable</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP9_2">§9.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">abbreviable</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -304,7 +304,7 @@ number of words.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameNames::longest_nounless</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">ActionNameNames::longest_nounless</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_3">§23.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">posn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameNames::longest_nounless</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">ActionNameNames::longest_nounless</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_3">§24.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">posn</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">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">if</span><span class="plain-syntax"> (</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::can_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
|
@ -318,7 +318,7 @@ number of words.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-av.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresscurrent">ann</li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-anl.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-av.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresscurrent">ann</li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-anl.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -77,16 +77,42 @@ function togglePopup(material_id) {
|
|||
entire chapter. The test group <span class="extract"><span class="extract-syntax">:actions</span></span> may be helpful in trouble-shooting here.
|
||||
</p>
|
||||
|
||||
<p class="commentary">It may be helpful to distinguish these ideas right from the outset:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● An "action" (or "explicit action", for the sake of clarity) is a specific
|
||||
impulse by a person in the model world to effect some change within it: for
|
||||
example, "Henry taking the brick". Here Henry is the "actor", and the brick is
|
||||
"the noun". Actions can be "stored" so that they are values in their own
|
||||
right; thus, a variable could be set to the value "Henry taking the brick",
|
||||
and this would have kind <span class="extract"><span class="extract-syntax">K_stored_action</span></span>. Inside the compiler they are
|
||||
represented by <a href="4-ea.html#SP1" class="internal">explicit_action</a> objects.
|
||||
</li><li>● An "action name" — not an ideal thing to call it, but traditional — is the
|
||||
type of action involved, taken in isolation: for example, "taking". These can
|
||||
also be values at run-time, they have kind <span class="extract"><span class="extract-syntax">K_action_name</span></span>, and they are
|
||||
represented in the comoiler by <a href="4-act.html#SP1" class="internal">action_name</a> objections.
|
||||
</li><li>● An "action pattern" is a textual description which matches some actions but
|
||||
not others, and can be vague or specific: for example, "wearing or examining
|
||||
something". Action patterns become values of the kind <span class="extract"><span class="extract-syntax">K_description_of_action</span></span>.
|
||||
They can also be aggregated into "named action patterns", which characterise
|
||||
behaviour; see <a href="4-ap2.html#SP1" class="internal">action_pattern</a> and <a href="4-nap.html#SP1" class="internal">named_action_pattern</a>.
|
||||
</li><li>● A "past action pattern", which can never in any way be a value, is a
|
||||
description of an action which have happened in the past: for example, "dropped
|
||||
the hat". These are just a special case of action patterns.
|
||||
</li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::start</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">ActionsPlugin::start</span></span>:<br/>IF Module - <a href="1-im.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anaa.html#SP2" class="function-link"><span class="function-syntax">ActionsNodes::nodes_and_annotations</span></a><span class="plain-syntax">();</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="4-ap.html#SP10" class="function-link"><span class="function-syntax">ActionsPlugin::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="4-ap.html#SP4" class="function-link"><span class="function-syntax">ActionsPlugin::new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="4-ap.html#SP6" class="function-link"><span class="function-syntax">ActionsPlugin::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="4-ak.html#SP3" class="function-link"><span class="function-syntax">ARvalues::new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPARE_CONSTANT_PLUG</span><span class="plain-syntax">, </span><a href="4-ak.html#SP8" class="function-link"><span class="function-syntax">ARvalues::compare_CONSTANT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_CONSTANT_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTActions::actions_compile_constant</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">CREATION_PLUG</span><span class="plain-syntax">, </span><a href="4-anaa.html#SP4" class="function-link"><span class="function-syntax">ActionsNodes::creation</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">UNUSUAL_PROPERTY_VALUE_PLUG</span><span class="plain-syntax">, </span><a href="4-anaa.html#SP4" class="function-link"><span class="function-syntax">ActionsNodes::unusual_property_value_node</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">OFFERED_PROPERTY_PLUG</span><span class="plain-syntax">, </span><a href="4-av.html#SP1" class="function-link"><span class="function-syntax">ActionVariables::actions_offered_property</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">OFFERED_SPECIFICATION_PLUG</span><span class="plain-syntax">, </span><a href="4-ap.html#SP9" class="function-link"><span class="function-syntax">ActionsPlugin::actions_offered_specification</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">TYPECHECK_EQUALITY_PLUG</span><span class="plain-syntax">, </span><a href="4-ap.html#SP5" class="function-link"><span class="function-syntax">ActionsPlugin::actions_typecheck_equality</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">OFFERED_SPECIFICATION_PLUG</span><span class="plain-syntax">, </span><a href="4-ap.html#SP5" class="function-link"><span class="function-syntax">ActionsPlugin::actions_offered_specification</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">TYPECHECK_EQUALITY_PLUG</span><span class="plain-syntax">, </span><a href="4-ak.html#SP4" class="function-link"><span class="function-syntax">ARvalues::actions_typecheck_equality</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">PRODUCTION_LINE_PLUG</span><span class="plain-syntax">, </span><a href="4-ap.html#SP1" class="function-link"><span class="function-syntax">ActionsPlugin::production_line</span></a><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Vocabulary::set_flags</span><span class="plain-syntax">(</span><span class="identifier-syntax">Vocabulary::entry_for_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"doing"</span><span class="plain-syntax">), </span><span class="identifier-syntax">ACTION_PARTICIPLE_MC</span><span class="plain-syntax">);</span>
|
||||
|
@ -104,67 +130,7 @@ entire chapter. The test group <span class="extract"><span class="extract-syntax
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>It may be useful to distinguish three ideas right from the outset:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● An "action" is a specific impulse by a person in the model world to effect
|
||||
some change within it: for example, "Henry taking the brick". Here Henry is the
|
||||
"actor", and the brick is "the noun". Actions can be "stored" so that they
|
||||
are values in their own right; thus, a variable could be set to the value
|
||||
"Henry taking the brick", and this would have kind <span class="extract"><span class="extract-syntax">K_stored_action</span></span>.
|
||||
</li><li>● An "action name" — not an ideal thing to call it, but traditional — is the
|
||||
type of action involved, taken in isolation: for example, "taking". These can
|
||||
also be values at run-time, and have kind <span class="extract"><span class="extract-syntax">K_action_name</span></span>.
|
||||
</li><li>● An "action pattern" is a textual description which matches some actions but
|
||||
not others, and can be vague or specific: for example, "wearing or examining
|
||||
something". Action patterns are in general not values, but names can be given
|
||||
to them so that they are — see <a href="4-nap.html" class="internal">Named Action Patterns</a> — and then they
|
||||
have the kind <span class="extract"><span class="extract-syntax">K_description_of_action</span></span>.
|
||||
</li><li>● A "past action pattern", which can never in any way be a value, is a
|
||||
description of an action which have happened in the past: for example, "dropped
|
||||
the hat".
|
||||
</li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_action_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K_description_of_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>These are created by a Neptune file inside <a href="../WorldModelKit/index.html" class="internal">WorldModelKit</a>, and are
|
||||
recognised by their Inter identifiers:
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::new_base_kind_notify</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">ActionsPlugin::new_base_kind_notify</span></span>:<br/><a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_base</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"ACTION_NAME_TY"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_action_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"DESCRIPTION_OF_ACTION_TY"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_description_of_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"STORED_ACTION_TY"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>A stored action can always be compared to a gerund: for instance,
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>if the current action is taking something...</p>
|
||||
</blockquote>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::actions_typecheck_equality</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">ActionsPlugin::actions_typecheck_equality</span></span>:<br/><a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K2</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_description_of_action</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>Though <span class="extract"><span class="extract-syntax">K_action_name</span></span> is very like an enumeration kind, its possible values,
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>Though <span class="extract"><span class="extract-syntax">K_action_name</span></span> is very like an enumeration kind, its possible values,
|
||||
which correspond to <a href="4-act.html#SP1" class="internal">action_name</a> objects, are not strictly speaking instances
|
||||
in the Inform world model. (Because they do not have properties: see <a href="4-av.html" class="internal">Action Variables</a>
|
||||
for what they have instead.)
|
||||
|
@ -177,7 +143,7 @@ for what they have instead.)
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">waiting_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>These are recognised by their English names when defined by the Standard Rules.
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>These are recognised by their English names when defined by the Standard Rules.
|
||||
(So there is no need to translate this to other languages.)
|
||||
</p>
|
||||
|
||||
|
@ -186,13 +152,13 @@ for what they have instead.)
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">waiting</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>Because <a href="4-act.html#SP1" class="internal">action_name</a> values are not instances, we cannot recognise them
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>Because <a href="4-act.html#SP1" class="internal">action_name</a> values are not instances, we cannot recognise them
|
||||
when instances are created, and instead have to do it directly when this is
|
||||
called by the function creating them:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::notice_new_action_name</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">ActionsPlugin::notice_new_action_name</span></span>:<br/>Action Name Names - <a href="4-ann.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::notice_new_action_name</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ActionsPlugin::notice_new_action_name</span></span>:<br/>Action Name Names - <a href="4-ann.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><waiting-action></span><span class="plain-syntax">(</span><a href="4-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::tensed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">IS_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">waiting_action</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">waiting_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">an</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -204,21 +170,21 @@ called by the function creating them:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">waiting_action</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>And because <span class="extract"><span class="extract-syntax">K_action_name</span></span> values have no properties, they cannot store
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>And because <span class="extract"><span class="extract-syntax">K_action_name</span></span> values have no properties, they cannot store
|
||||
a "specification" text as one, and have to make their own arrangements:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::actions_offered_specification</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">ActionsPlugin::actions_offered_specification</span></span>:<br/><a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::actions_offered_specification</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">ActionsPlugin::actions_offered_specification</span></span>:<br/><a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_action_name</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">IXActions::actions_set_specification_text</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::to_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">owner</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><a href="4-ak.html#SP5" class="function-link"><span class="function-syntax">ARvalues::to_action_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">owner</span><span class="plain-syntax">), </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">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>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>The rest of this section is given over to the Preform grammar for dealing
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>The rest of this section is given over to the Preform grammar for dealing
|
||||
with the special meaning "X is an action...", which creates new action names.
|
||||
These can be quite complicated:
|
||||
</p>
|
||||
|
@ -232,8 +198,8 @@ These can be quite complicated:
|
|||
</blockquote>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::make_special_meanings</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">ActionsPlugin::make_special_meanings</span></span>:<br/><a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-ap.html#SP10" class="function-link"><span class="function-syntax">ActionsPlugin::new_action_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-action"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::make_special_meanings</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">ActionsPlugin::make_special_meanings</span></span>:<br/><a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-ap.html#SP6" class="function-link"><span class="function-syntax">ActionsPlugin::new_action_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-action"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -242,13 +208,13 @@ These can be quite complicated:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">SW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">task</span><span class="plain-syntax">) { </span><span class="comment-syntax"> "Taking something is an action."</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Check that this validly declares an action</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PASS_1_SMFT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">Parse the subject and object phrases</span><span class="named-paragraph-number">10.2</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Check that this validly declares an action</span><span class="named-paragraph-number">6.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PASS_1_SMFT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Parse the subject and object phrases</span><span class="named-paragraph-number">6.2</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10_1" class="paragraph-anchor"></a><b>§10.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that this validly declares an action</span><span class="named-paragraph-number">10.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP6_1" class="paragraph-anchor"></a><b>§6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that this validly declares an action</span><span class="named-paragraph-number">6.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -261,8 +227,8 @@ These can be quite complicated:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b><nounphrase-actionable> here is an awkward necessity, designed to prevent the
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b><nounphrase-actionable> here is an awkward necessity, designed to prevent the
|
||||
regular sentence "The impulse is an action name that varies" from being parsed
|
||||
as an instance of "... is an action ...", creating a new action.
|
||||
</p>
|
||||
|
@ -274,7 +240,7 @@ as an instance of "... is an action ...", creating a new action.
|
|||
|
||||
<span class="Preform-function-syntax"><new-action-sentence-object-unarticled></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">action</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><nounphrase-actionable></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">action</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-ap.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_BadActionDeclaration problem</span><span class="named-paragraph-number">11.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">action</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-ap.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_BadActionDeclaration problem</span><span class="named-paragraph-number">7.1</span></a></span>
|
||||
|
||||
<span class="Preform-function-syntax"><nounphrase-actionable></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">^<variable-creation-tail></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, Diagrams::new_UNPARSED_NOUN(W) }</span>
|
||||
|
@ -284,7 +250,7 @@ as an instance of "... is an action ...", creating a new action.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">variable</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_1" class="paragraph-anchor"></a><b>§11.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_BadActionDeclaration problem</span><span class="named-paragraph-number">11.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP7_1" class="paragraph-anchor"></a><b>§7.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_BadActionDeclaration problem</span><span class="named-paragraph-number">7.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -294,12 +260,12 @@ as an instance of "... is an action ...", creating a new action.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"is an action applying to one thing.'"</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">NULL</span><span class="plain-syntax"> };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_2" class="paragraph-anchor"></a><b>§10.2. </b>Supposing that all that worked, the SP of the sentence is the name for the
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2" class="paragraph-anchor"></a><b>§6.2. </b>Supposing that all that worked, the SP of the sentence is the name for the
|
||||
new action, and the OP can include a wide range of details about it.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the subject and object phrases</span><span class="named-paragraph-number">10.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the subject and object phrases</span><span class="named-paragraph-number">6.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -307,23 +273,23 @@ new action, and the OP can include a wide range of details about it.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><action-sentence-subject>(Node::get_text(V-></span><span class="element-syntax">next</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an_being_parsed</span><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">an_being_parsed</span><span class="plain-syntax">-></span><span class="element-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">designers_specification</span><span class="plain-syntax"> = </span><span class="identifier-syntax">V</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap.html#SP14" class="function-link"><span class="function-syntax">ActionsPlugin::clear_clauses</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap.html#SP10" class="function-link"><span class="function-syntax">ActionsPlugin::clear_clauses</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax"><action-sentence-object>(Node::get_text(V->next-></span><span class="element-syntax">next</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP10">§10</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>The subject noun phrase needs little further parsing — it's the name of the
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>The subject noun phrase needs little further parsing — it's the name of the
|
||||
action-to-be. A successful match here causes the new <a href="4-act.html#SP1" class="internal">action_name</a> structure
|
||||
to be created.
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><action-sentence-subject></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-name></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-ap.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionAlreadyExists problem</span><span class="named-paragraph-number">12.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-name></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-ap.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionAlreadyExists problem</span><span class="named-paragraph-number">8.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, PL::Actions::act_new(W) }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1" class="paragraph-anchor"></a><b>§12.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActionAlreadyExists problem</span><span class="named-paragraph-number">12.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP8_1" class="paragraph-anchor"></a><b>§8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActionAlreadyExists problem</span><span class="named-paragraph-number">8.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -338,8 +304,8 @@ to be created.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"('Understand \"unlock [something]\" as keyless unlocking.')."</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">nonterminal</span><span class="plain-syntax"> };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP12">§12</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>The object NP is a sequence of "action clauses" which can occur in any order,
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>The object NP is a sequence of "action clauses" which can occur in any order,
|
||||
which are allowed but not required to be delimited as a list, and which can
|
||||
inconveniently contain the word "and"; not only that, but note that in
|
||||
</p>
|
||||
|
@ -354,7 +320,7 @@ inconveniently contain the word "and"; not only that, but note that in
|
|||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><action-sentence-object></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-clauses></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, - }</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-ap.html#SP13_9" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionClauseUnknown problem</span><span class="named-paragraph-number">13.9</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP9_9" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionClauseUnknown problem</span><span class="named-paragraph-number">9.9</span></a></span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-clauses></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { lookahead }</span>
|
||||
|
@ -368,26 +334,26 @@ inconveniently contain the word "and"; not only that, but note that in
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-clause></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-clause></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">out</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">world</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"> { OOW_ACT_CLAUSE, - }; </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP13_1" class="named-paragraph-link"><span class="named-paragraph">Make out of world</span><span class="named-paragraph-number">13.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">abbreviable</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"> { ABBREV_ACT_CLAUSE, - }; </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP13_2" class="named-paragraph-link"><span class="named-paragraph">Make abbreviable</span><span class="named-paragraph-number">13.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">with</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">past</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">participle</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"> { PP_ACT_CLAUSE, - }; </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP13_3" class="named-paragraph-link"><span class="named-paragraph">Give irregular participle</span><span class="named-paragraph-number">13.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">out</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">world</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"> { OOW_ACT_CLAUSE, - }; </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Make out of world</span><span class="named-paragraph-number">9.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">abbreviable</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"> { ABBREV_ACT_CLAUSE, - }; </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Make abbreviable</span><span class="named-paragraph-number">9.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">with</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">past</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">participle</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"> { PP_ACT_CLAUSE, - }; </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP9_3" class="named-paragraph-link"><span class="named-paragraph">Give irregular participle</span><span class="named-paragraph-number">9.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">applying</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-applications></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"> { APPLYING_ACT_CLAUSE, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">requiring</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">light</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { LIGHT_ACT_CLAUSE, - }; </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP13_4" class="named-paragraph-link"><span class="named-paragraph">Require light</span><span class="named-paragraph-number">13.4</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">requiring</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">light</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { LIGHT_ACT_CLAUSE, - }; </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP9_4" class="named-paragraph-link"><span class="named-paragraph">Require light</span><span class="named-paragraph-number">9.4</span></a></span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-applications></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">nothing</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP13_7" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for two</span><span class="named-paragraph-number">13.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP13_7" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for two</span><span class="named-paragraph-number">13.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP13_7" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for two</span><span class="named-paragraph-number">13.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP13_7" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for two</span><span class="named-paragraph-number">13.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">nothing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">or</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP13_5" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for an optional one</span><span class="named-paragraph-number">13.5</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP13_6" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for one</span><span class="named-paragraph-number">13.6</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">two</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP13_8" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for one, doubling up</span><span class="named-paragraph-number">13.8</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP13_6" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for one</span><span class="named-paragraph-number">13.6</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP13_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionMisapplied problem</span><span class="named-paragraph-number">13.10</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP9_7" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for two</span><span class="named-paragraph-number">9.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP9_7" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for two</span><span class="named-paragraph-number">9.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP9_7" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for two</span><span class="named-paragraph-number">9.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP9_7" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for two</span><span class="named-paragraph-number">9.7</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">nothing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">or</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP9_5" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for an optional one</span><span class="named-paragraph-number">9.5</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">one</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP9_6" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for one</span><span class="named-paragraph-number">9.6</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">two</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP9_8" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for one, doubling up</span><span class="named-paragraph-number">9.8</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req></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-ap.html#SP9_6" class="named-paragraph-link"><span class="named-paragraph">Set kind and access for one</span><span class="named-paragraph-number">9.6</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP9_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionMisapplied problem</span><span class="named-paragraph-number">9.10</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
|
||||
<span class="Preform-function-syntax"><act-req></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req-inner></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-ap.html#SP13_11" class="named-paragraph-link"><span class="named-paragraph">Check action kind</span><span class="named-paragraph-number">13.11</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><act-req-inner></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-ap.html#SP9_11" class="named-paragraph-link"><span class="named-paragraph">Check action kind</span><span class="named-paragraph-number">9.11</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
|
||||
<span class="Preform-function-syntax"><act-req-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-access></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><k-kind></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"> { R[1], RP[2] }</span>
|
||||
|
@ -399,63 +365,63 @@ inconveniently contain the word "and"; not only that, but note that in
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">carried</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { REQUIRES_POSSESSION, - }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_1" class="paragraph-anchor"></a><b>§13.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make out of world</span><span class="named-paragraph-number">13.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP9_1" class="paragraph-anchor"></a><b>§9.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make out of world</span><span class="named-paragraph-number">9.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-as.html#SP4" class="function-link"><span class="function-syntax">ActionSemantics::make_action_out_of_world</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_being_parsed</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_2" class="paragraph-anchor"></a><b>§13.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make abbreviable</span><span class="named-paragraph-number">13.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_2" class="paragraph-anchor"></a><b>§9.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make abbreviable</span><span class="named-paragraph-number">9.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-ann.html#SP8" class="function-link"><span class="function-syntax">ActionNameNames::make_abbreviable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_being_parsed</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_3" class="paragraph-anchor"></a><b>§13.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give irregular participle</span><span class="named-paragraph-number">13.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_3" class="paragraph-anchor"></a><b>§9.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give irregular participle</span><span class="named-paragraph-number">9.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-ann.html#SP4" class="function-link"><span class="function-syntax">ActionNameNames::set_irregular_past</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_being_parsed</span><span class="plain-syntax">, </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><action-clause></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_4" class="paragraph-anchor"></a><b>§13.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Require light</span><span class="named-paragraph-number">13.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4" class="paragraph-anchor"></a><b>§9.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Require light</span><span class="named-paragraph-number">9.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-as.html#SP4" class="function-link"><span class="function-syntax">ActionSemantics::make_action_require_light</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_being_parsed</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_5" class="paragraph-anchor"></a><b>§13.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set kind and access for an optional one</span><span class="named-paragraph-number">13.5</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_5" class="paragraph-anchor"></a><b>§9.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set kind and access for an optional one</span><span class="named-paragraph-number">9.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-as.html#SP4" class="function-link"><span class="function-syntax">ActionSemantics::give_action_an_optional_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_being_parsed</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_6" class="paragraph-anchor"></a><b>§13.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set kind and access for one</span><span class="named-paragraph-number">13.6</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_6" class="paragraph-anchor"></a><b>§9.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set kind and access for one</span><span class="named-paragraph-number">9.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-as.html#SP4" class="function-link"><span class="function-syntax">ActionSemantics::give_action_one_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_being_parsed</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_7" class="paragraph-anchor"></a><b>§13.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set kind and access for two</span><span class="named-paragraph-number">13.7</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_7" class="paragraph-anchor"></a><b>§9.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set kind and access for two</span><span class="named-paragraph-number">9.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-as.html#SP4" class="function-link"><span class="function-syntax">ActionSemantics::give_action_two_nouns</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_being_parsed</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">R</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a> (four times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_8" class="paragraph-anchor"></a><b>§13.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set kind and access for one, doubling up</span><span class="named-paragraph-number">13.8</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a> (four times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_8" class="paragraph-anchor"></a><b>§9.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set kind and access for one, doubling up</span><span class="named-paragraph-number">9.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-as.html#SP4" class="function-link"><span class="function-syntax">ActionSemantics::give_action_two_nouns</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_being_parsed</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">R</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_9" class="paragraph-anchor"></a><b>§13.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActionClauseUnknown problem</span><span class="named-paragraph-number">13.9</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_9" class="paragraph-anchor"></a><b>§9.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActionClauseUnknown problem</span><span class="named-paragraph-number">9.9</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -464,8 +430,8 @@ inconveniently contain the word "and"; not only that, but note that in
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"the action definition contained text I couldn't follow"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and may be too complicated."</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_10" class="paragraph-anchor"></a><b>§13.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActionMisapplied problem</span><span class="named-paragraph-number">13.10</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_10" class="paragraph-anchor"></a><b>§9.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_ActionMisapplied problem</span><span class="named-paragraph-number">9.10</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -476,8 +442,8 @@ inconveniently contain the word "and"; not only that, but note that in
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"one visible thing'."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">REQUIRES_ACCESS</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax"> };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a>, <a href="4-ap.html#SP13_11">§13.11</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_11" class="paragraph-anchor"></a><b>§13.11. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check action kind</span><span class="named-paragraph-number">13.11</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a>, <a href="4-ap.html#SP9_11">§9.11</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_11" class="paragraph-anchor"></a><b>§9.11. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check action kind</span><span class="named-paragraph-number">9.11</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -486,15 +452,15 @@ inconveniently contain the word "and"; not only that, but note that in
|
|||
<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="constant-syntax">UNRESTRICTED_ACCESS</span><span class="plain-syntax">) </span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="constant-syntax">REQUIRES_ACCESS</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> ==> { </span><span class="identifier-syntax">A</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP13_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionMisapplied problem</span><span class="named-paragraph-number">13.10</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP9_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionMisapplied problem</span><span class="named-paragraph-number">9.10</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax"> != </span><span class="constant-syntax">UNRESTRICTED_ACCESS</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP13_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionMisapplied problem</span><span class="named-paragraph-number">13.10</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ap.html#SP9_10" class="named-paragraph-link"><span class="named-paragraph">Issue PM_ActionMisapplied problem</span><span class="named-paragraph-number">9.10</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> ==> { </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax"> };</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>For years this was not erroneous, but you now can't write, say, "X is an
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ap.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>For years this was not erroneous, but you now can't write, say, "X is an
|
||||
action applying to nothing, applying to nothing, requiring light and applying
|
||||
to nothing".
|
||||
</p>
|
||||
|
@ -507,10 +473,10 @@ to nothing".
|
|||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">an_clauses_filled</span><span class="plain-syntax">[6];</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::clear_clauses</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">ActionsPlugin::clear_clauses</span></span>:<br/><a href="4-ap.html#SP10_2">§10.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::clear_clauses</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">ActionsPlugin::clear_clauses</span></span>:<br/><a href="4-ap.html#SP6_2">§6.2</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><=5; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">an_clauses_filled</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::clause</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">ActionsPlugin::clause</span></span>:<br/><a href="4-ap.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsPlugin::clause</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">ActionsPlugin::clause</span></span>:<br/><a href="4-ap.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an_clauses_filled</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ActionClauseRepeated</span><span class="plain-syntax">),</span>
|
||||
|
@ -520,7 +486,7 @@ to nothing".
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">ap</li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-anaa.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">ap</li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-anaa.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -101,11 +101,11 @@ object instead of an action — "reaching inside the cabinet".
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">valid</span><span class="plain-syntax">; </span><span class="comment-syntax"> recording success or failure in parsing to an AP</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure action_pattern is accessed in 4/apc, 4/pap and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure action_pattern is accessed in 4/ea, 4/apc, 4/pap and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::new</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP3">§3</a>, <a href="4-pap.html#SP19_1">§19.1</a>, <a href="4-pap.html#SP20">§20</a>, <a href="4-pap.html#SP23">§23</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::new</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP4">§4</a>, <a href="4-pap.html#SP20_1">§20.1</a>, <a href="4-pap.html#SP21">§21</a>, <a href="4-pap.html#SP24">§24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">ap_clauses</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">text_of_pattern</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
|
@ -119,21 +119,11 @@ object instead of an action — "reaching inside the cabinet".
|
|||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">explicit_action</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">request</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</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actor</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first_noun</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">second_noun</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_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">as_described</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">explicit_action</span><span class="plain-syntax">;</span>
|
||||
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::log</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::log</span></span>:<br/>IF Module - <a href="1-im.html#SP2">§2</a>, <a href="1-im.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::write</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::write</span></span>:<br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::write</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::write</span></span>:<br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-ap>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">valid</span><span class="plain-syntax"> != </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<invalid>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -146,7 +136,7 @@ object instead of an action — "reaching inside the cabinet".
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::ap_store</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::ap_store</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP19_1">§19.1</a>, <a href="4-pap.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::ap_store</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::ap_store</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP20_1">§20.1</a>, <a href="4-pap.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">sap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sap</span><span class="plain-syntax">;</span>
|
||||
|
@ -160,7 +150,7 @@ object instead of an action — "reaching inside the cabinet".
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_valid</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::is_valid</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_valid</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::is_valid</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">valid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -170,12 +160,12 @@ object instead of an action — "reaching inside the cabinet".
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::covers_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::list</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::list</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::list</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::list</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<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><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::required_action</span></span>:<br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-anl.html#SP14" class="function-link"><span class="function-syntax">ActionNameLists::single_positive_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -185,54 +175,6 @@ object instead of an action — "reaching inside the cabinet".
|
|||
<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">explicit_action</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::to_explicit_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">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reason</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::is_unspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) { *</span><span class="identifier-syntax">reason</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">NULL</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::is_overspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) { *</span><span class="identifier-syntax">reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">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="reserved-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">explicit_action</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">action</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP15" class="function-link"><span class="function-syntax">ActionNameLists::get_the_one_true_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">request</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::is_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">actor</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">first_noun</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">second_noun</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">as_described</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::make_ACTION_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTION_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_action_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_unspecific</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::required_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::must_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) && (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::must_have_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) && (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::can_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::ap_clause_is_unspecific</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">)))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::can_have_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::ap_clause_is_unspecific</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">)))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::ap_clause_is_unspecific</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::ap_clause_is_unspecific</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_description</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_overspecific</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_overspecific</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP5" class="function-link"><span class="function-syntax">APClauses::aspect</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) != </span><span class="constant-syntax">PRIMARY_APCA</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::has_any_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">duration</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::suppress_action_testing</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">duration</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="plain-syntax"> </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::suppress_action_testing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">);</span>
|
||||
|
@ -244,7 +186,6 @@ object instead of an action — "reaching inside the cabinet".
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure explicit_action is accessed in 4/anaa and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -264,6 +205,19 @@ object instead of an action — "reaching inside the cabinet".
|
|||
<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">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::action_from_TEST</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ac.html#SP1" class="function-link"><span class="function-syntax">AConditions::is_action_TEST_VALUE</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><a href="4-ak.html#SP6" class="function-link"><span class="function-syntax">ARvalues::to_action_pattern</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ac.html#SP1" class="function-link"><span class="function-syntax">AConditions::action_tested</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_explicit_action</span><span class="plain-syntax">(</span><a href="4-ac.html#SP1" class="function-link"><span class="function-syntax">AConditions::action_tested</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ea</span><span class="plain-syntax">) </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">as_described</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">ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::compare_specificity</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
|
@ -304,7 +258,7 @@ object instead of an action — "reaching inside the cabinet".
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anl.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresscurrent">ap2</li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-apc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anl.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresscurrent">ap2</li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ea.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -108,7 +108,7 @@ MathJax = {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure ap_clause is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 4/gng, 5/tfg, 5/gl and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure ap_clause is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 4/ea, 4/gng, 5/tfg, 5/gl and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The clause options are a bitmap. Some are meaningful only for one or two
|
||||
clauses.
|
||||
</p>
|
||||
|
@ -127,49 +127,49 @@ clauses.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_opt</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">APClauses::set_opt</span></span>:<br/>Going - <a href="4-gng.html#SP4">§4</a><br/>Parse Action Patterns - <a href="4-pap.html#SP24">§24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_opt</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">APClauses::set_opt</span></span>:<br/>Going - <a href="4-gng.html#SP4">§4</a><br/>Parse Action Patterns - <a href="4-pap.html#SP25">§25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no such apoc"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_options</span><span class="plain-syntax"> & </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_options</span><span class="plain-syntax"> += </span><span class="identifier-syntax">opt</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::clear_opt</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">APClauses::clear_opt</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24">§24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::clear_opt</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">APClauses::clear_opt</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP25">§25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no such apoc"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_options</span><span class="plain-syntax"> & </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_options</span><span class="plain-syntax"> -= </span><span class="identifier-syntax">opt</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::any_actor</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">APClauses::any_actor</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP8">§8</a>, <a href="4-pap.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">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::any_actor</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">APClauses::any_actor</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP9">§9</a>, <a href="4-pap.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::ensure_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_IS_NOT_PLAYER_APCOPT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::has_any_actor</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">APClauses::has_any_actor</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::has_any_actor</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">APClauses::has_any_actor</span></span>:<br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_IS_NOT_PLAYER_APCOPT</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_request</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">APClauses::set_request</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP8">§8</a>, <a href="4-pap.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">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_request</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">APClauses::set_request</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP9">§9</a>, <a href="4-pap.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::ensure_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">REQUEST_APCOPT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::clear_request</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">APClauses::clear_request</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP8">§8</a>, <a href="4-pap.html#SP9">§9</a>, <a href="4-pap.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::clear_request</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">APClauses::clear_request</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP9">§9</a>, <a href="4-pap.html#SP10">§10</a>, <a href="4-pap.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::ensure_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clear_opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">REQUEST_APCOPT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::is_request</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">APClauses::is_request</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::is_request</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">APClauses::is_request</span></span>:<br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">REQUEST_APCOPT</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_val</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">APClauses::get_val</span></span>:<br/><a href="4-apc.html#SP5">§5</a><br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a>, <a href="4-ap2.html#SP4">§4</a><br/>Going - <a href="4-gng.html#SP4">§4</a>, <a href="4-gng.html#SP5">§5</a>, <a href="4-gng.html#SP6">§6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP23_5">§23.5</a><br/>Named Action Patterns - <a href="4-nap.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_val</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">APClauses::get_val</span></span>:<br/><a href="4-apc.html#SP5">§5</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a><br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a><br/>Going - <a href="4-gng.html#SP4">§4</a>, <a href="4-gng.html#SP5">§5</a>, <a href="4-gng.html#SP6">§6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP1">§1</a>, <a href="4-pap.html#SP24_5">§24.5</a><br/>Named Action Patterns - <a href="4-nap.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_val</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">APClauses::set_val</span></span>:<br/>Going - <a href="4-gng.html#SP5">§5</a><br/>Parse Action Patterns - <a href="4-pap.html#SP3">§3</a>, <a href="4-pap.html#SP8">§8</a>, <a href="4-pap.html#SP9">§9</a>, <a href="4-pap.html#SP10">§10</a>, <a href="4-pap.html#SP16">§16</a>, <a href="4-pap.html#SP18">§18</a>, <a href="4-pap.html#SP19_1">§19.1</a>, <a href="4-pap.html#SP23_5">§23.5</a>, <a href="4-pap.html#SP23_5_4">§23.5.4</a>, <a href="4-pap.html#SP24">§24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_val</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">APClauses::set_val</span></span>:<br/>Going - <a href="4-gng.html#SP5">§5</a><br/>Parse Action Patterns - <a href="4-pap.html#SP4">§4</a>, <a href="4-pap.html#SP9">§9</a>, <a href="4-pap.html#SP10">§10</a>, <a href="4-pap.html#SP11">§11</a>, <a href="4-pap.html#SP17">§17</a>, <a href="4-pap.html#SP19">§19</a>, <a href="4-pap.html#SP20_1">§20.1</a>, <a href="4-pap.html#SP24_5">§24.5</a>, <a href="4-pap.html#SP24_5_4">§24.5.4</a>, <a href="4-pap.html#SP25">§25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
|
||||
|
@ -179,12 +179,12 @@ clauses.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::nullify_nonspecific</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">APClauses::nullify_nonspecific</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_1">§23.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::nullify_nonspecific</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">APClauses::nullify_nonspecific</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_1">§24.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::clause</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">APClauses::clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_5">§23.5.5</a>, <a href="4-pap.html#SP24">§24</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::clause</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">APClauses::clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_5">§24.5.5</a>, <a href="4-pap.html#SP25">§25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::find_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -230,10 +230,10 @@ clauses.
|
|||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::ap_add_optional_clause</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">APClauses::ap_add_optional_clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_3">§23.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::ap_add_optional_clause</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">APClauses::ap_add_optional_clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_3">§24.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no stacked variable for apoc"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP4" class="function-link"><span class="function-syntax">ParseActionPatterns::verified_action_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP5" class="function-link"><span class="function-syntax">ParseActionPatterns::verified_action_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">oid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_owner_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">off</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
@ -289,7 +289,7 @@ clauses.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::validate</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">APClauses::validate</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_5">§23.5.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::validate</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">APClauses::validate</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_5">§24.5.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">DO_NOT_VALIDATE_APCOPT</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Dash::validate_parameter</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
|
@ -338,7 +338,7 @@ used in sorting algorithms.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">MISC_APCA</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::aspect</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">APClauses::aspect</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::aspect</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">APClauses::aspect</span></span>:<br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PARAMETRIC_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">PARAMETRIC_APCA</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACTOR_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">PRIMARY_APCA</span><span class="plain-syntax">;</span>
|
||||
|
@ -416,7 +416,7 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::viable_in_past_tense</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::is_overspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">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-ea.html#SP2" class="function-link"><span class="function-syntax">ExplicitActions::ap_overspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP5" class="function-link"><span class="function-syntax">APClauses::pta_acceptable</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP5" class="function-link"><span class="function-syntax">APClauses::pta_acceptable</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP5" class="function-link"><span class="function-syntax">APClauses::pta_acceptable</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -432,7 +432,7 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ap2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresscurrent">apc</li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-gng.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ea.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresscurrent">apc</li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-gng.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -143,19 +143,19 @@ preferred way to do that is to use activities for selecting missing parameters.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::give_action_an_optional_noun</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">ActionSemantics::give_action_an_optional_noun</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP13_5">§13.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">acc</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::give_action_an_optional_noun</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">ActionSemantics::give_action_an_optional_noun</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP9_5">§9.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">acc</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">min_parameters</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="identifier-syntax">max_parameters</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">noun_access</span><span class="plain-syntax"> = </span><span class="identifier-syntax">acc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">noun_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::give_action_one_noun</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">ActionSemantics::give_action_one_noun</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP13_6">§13.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">acc</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::give_action_one_noun</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">ActionSemantics::give_action_one_noun</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP9_6">§9.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">acc</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">min_parameters</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="identifier-syntax">max_parameters</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">noun_access</span><span class="plain-syntax"> = </span><span class="identifier-syntax">acc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">noun_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::give_action_two_nouns</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">ActionSemantics::give_action_two_nouns</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP13_7">§13.7</a>, <a href="4-ap.html#SP13_8">§13.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">acc1</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K1</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::give_action_two_nouns</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">ActionSemantics::give_action_two_nouns</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP9_7">§9.7</a>, <a href="4-ap.html#SP9_8">§9.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">acc1</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K1</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">acc2</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">min_parameters</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="identifier-syntax">max_parameters</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
|
@ -174,10 +174,10 @@ preferred way to do that is to use activities for selecting missing parameters.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"value, but not to two values. Sorry about that."</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">ActionSemantics::make_action_out_of_world</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">ActionSemantics::make_action_out_of_world</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP13_1">§13.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::make_action_out_of_world</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">ActionSemantics::make_action_out_of_world</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP9_1">§9.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">out_of_world</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::make_action_require_light</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">ActionSemantics::make_action_require_light</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP13_4">§13.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::make_action_require_light</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">ActionSemantics::make_action_require_light</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP9_4">§9.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">requires_light</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -185,22 +185,22 @@ preferred way to do that is to use activities for selecting missing parameters.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::can_have_noun</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::can_have_noun</span></span>:<br/><a href="4-as.html#SP7">§7</a><br/>Action Name Names - <a href="4-ann.html#SP13">§13</a><br/>Action Name Lists - <a href="4-anl.html#SP20_2">§20.2</a>, <a href="4-anl.html#SP24_1_3">§24.1.3</a><br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a><br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_6">§23.5.6</a>, <a href="4-pap.html#SP23_6">§23.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::can_have_noun</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::can_have_noun</span></span>:<br/><a href="4-as.html#SP7">§7</a><br/>Action Name Names - <a href="4-ann.html#SP13">§13</a><br/>Action Name Lists - <a href="4-anl.html#SP20_2">§20.2</a>, <a href="4-anl.html#SP24_1_3">§24.1.3</a><br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a><br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_6">§24.5.6</a>, <a href="4-pap.html#SP24_6">§24.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="identifier-syntax">max_parameters</span><span class="plain-syntax"> >= </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::can_have_second</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::can_have_second</span></span>:<br/><a href="4-as.html#SP7">§7</a><br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a><br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_6">§23.5.6</a>, <a href="4-pap.html#SP23_6">§23.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::can_have_second</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::can_have_second</span></span>:<br/><a href="4-as.html#SP7">§7</a><br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a><br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_6">§24.5.6</a>, <a href="4-pap.html#SP24_6">§24.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="identifier-syntax">max_parameters</span><span class="plain-syntax"> >= </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::must_have_noun</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::must_have_noun</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::must_have_noun</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::must_have_noun</span></span>:<br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">min_parameters</span><span class="plain-syntax"> >= </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::must_have_second</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::must_have_second</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::must_have_second</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::must_have_second</span></span>:<br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">min_parameters</span><span class="plain-syntax"> >= </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -214,7 +214,7 @@ preferred way to do that is to use activities for selecting missing parameters.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::is_out_of_world</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">ActionSemantics::is_out_of_world</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_6">§23.6</a><br/>Grammar Lines - <a href="5-gl.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::is_out_of_world</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">ActionSemantics::is_out_of_world</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_6">§24.6</a><br/>Grammar Lines - <a href="5-gl.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">out_of_world</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>
|
||||
|
@ -227,11 +227,11 @@ preferred way to do that is to use activities for selecting missing parameters.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">second_access</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionSemantics::kind_of_noun</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">ActionSemantics::kind_of_noun</span></span>:<br/><a href="4-as.html#SP6">§6</a>, <a href="4-as.html#SP7">§7</a><br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_5">§23.5.5</a>, <a href="4-pap.html#SP23_5_6">§23.5.6</a>, <a href="4-pap.html#SP23_6">§23.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionSemantics::kind_of_noun</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">ActionSemantics::kind_of_noun</span></span>:<br/><a href="4-as.html#SP6">§6</a>, <a href="4-as.html#SP7">§7</a><br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_5">§24.5.5</a>, <a href="4-pap.html#SP24_5_6">§24.5.6</a>, <a href="4-pap.html#SP24_6">§24.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">noun_kind</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionSemantics::kind_of_second</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">ActionSemantics::kind_of_second</span></span>:<br/><a href="4-as.html#SP6">§6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_4">§23.5.4</a>, <a href="4-pap.html#SP23_5_5">§23.5.5</a>, <a href="4-pap.html#SP23_5_6">§23.5.6</a>, <a href="4-pap.html#SP23_6">§23.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionSemantics::kind_of_second</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">ActionSemantics::kind_of_second</span></span>:<br/><a href="4-as.html#SP6">§6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_4">§24.5.4</a>, <a href="4-pap.html#SP24_5_5">§24.5.5</a>, <a href="4-pap.html#SP24_5_6">§24.5.6</a>, <a href="4-pap.html#SP24_6">§24.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">second_kind</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -356,7 +356,7 @@ clear from the implementation in <a href="../runtime-module/5-act.html" class="i
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-act.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresscurrent">as</li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-av.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-act.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresscurrent">as</li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-av.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -81,7 +81,7 @@ into creations of action variables:
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionVariables::actions_offered_property</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">ActionVariables::actions_offered_property</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_action_name</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="identifier-syntax">Rvalues::to_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">owner</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-ak.html#SP5" class="function-link"><span class="function-syntax">ARvalues::to_action_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">owner</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"failed to extract action-name structure"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">global_pass_state</span><span class="plain-syntax">.</span><span class="identifier-syntax">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-av.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Require the variable to have an explicit name</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -297,12 +297,12 @@ action patterns. For example, the Standard Rules define:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionVariables::parse_match_clause</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">ActionVariables::parse_match_clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_3">§23.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionVariables::parse_match_clause</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">ActionVariables::parse_match_clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_3">§24.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">StackedVariables::parse_match_clause</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">action_variables</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-as.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresscurrent">av</li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ann.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-as.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresscurrent">av</li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ann.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
149
docs/if-module/4-ea.html
Normal file
149
docs/if-module/4-ea.html
Normal file
|
@ -0,0 +1,149 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Explicit Actions</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">if</span></a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Explicit Actions' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Explicit Actions</b></li></ul></div>
|
||||
<p class="purpose">An exactly specified action is called "explicit".</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Explicit actions are used inside the compiler whenever we kmow exactly what
|
||||
action we are talking about; stored action constants are <a href="4-ea.html#SP1" class="internal">explicit_action</a>
|
||||
objects in a thin wrapper — see <a href="4-ak.html" class="internal">Action Kinds</a>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">explicit_action</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">request</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</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actor</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first_noun</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">second_noun</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_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">as_described</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">explicit_action</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure explicit_action is accessed in 4/anaa, 4/ap2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">UNDERSPECIFIC_EA_FAILURE</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">OVERSPECIFIC_EA_FAILURE</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="function-syntax">ExplicitActions::from_action_pattern</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">ExplicitActions::from_action_pattern</span></span>:<br/>Action Kinds - <a href="4-ak.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reason</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-ea.html#SP2" class="function-link"><span class="function-syntax">ExplicitActions::ap_underspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) { *</span><span class="identifier-syntax">reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">UNDERSPECIFIC_EA_FAILURE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ea.html#SP2" class="function-link"><span class="function-syntax">ExplicitActions::ap_overspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) { *</span><span class="identifier-syntax">reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">OVERSPECIFIC_EA_FAILURE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">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="reserved-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">explicit_action</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">action</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP15" class="function-link"><span class="function-syntax">ActionNameLists::get_the_one_true_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">request</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::is_request</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">actor</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">first_noun</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">second_noun</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="element-syntax">as_described</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ea</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">ExplicitActions::ap_underspecific</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::required_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::must_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::must_have_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::can_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-ea.html#SP2" class="function-link"><span class="function-syntax">ExplicitActions::clause_unspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::can_have_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-ea.html#SP2" class="function-link"><span class="function-syntax">ExplicitActions::clause_unspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ea.html#SP2" class="function-link"><span class="function-syntax">ExplicitActions::clause_unspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="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">ExplicitActions::clause_unspecific</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_description</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExplicitActions::ap_overspecific</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">ExplicitActions::ap_overspecific</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP5" class="function-link"><span class="function-syntax">APClauses::aspect</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) != </span><span class="constant-syntax">PRIMARY_APCA</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::has_any_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">duration</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ap2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresscurrent">ea</li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-apc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -84,7 +84,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">going_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Going::notice_new_action_name</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Going::notice_new_action_name</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Going::notice_new_action_name</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Going::notice_new_action_name</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><going-action></span><span class="plain-syntax">(</span><a href="4-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::tensed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">))) </span><span class="identifier-syntax">going_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">an</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -198,7 +198,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::check</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Going::check</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_1">§23.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::check</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Going::check</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_1">§24.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-gng.html#SP5" class="function-link"><span class="function-syntax">Going::check_clause</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="string-syntax">"from"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-gng.html#SP5" class="function-link"><span class="function-syntax">Going::check_clause</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="string-syntax">"to"</span><span class="plain-syntax">,</span>
|
||||
|
@ -249,20 +249,20 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Going::go_nowhere</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Going::go_nowhere</span></span>:<br/><a href="4-gng.html#SP8">§8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP23_5">§23.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Going::go_nowhere</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Going::go_nowhere</span></span>:<br/><a href="4-gng.html#SP8">§8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP24_5">§24.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::new_nothing_object_constant</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Going::go_somewhere</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">Going::go_somewhere</span></span>:<br/><a href="4-gng.html#SP8">§8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP23_5">§23.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Going::go_somewhere</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">Going::go_somewhere</span></span>:<br/><a href="4-gng.html#SP8">§8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP24_5">§24.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Descriptions::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_room</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::going_nowhere</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">Going::going_nowhere</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5">§23.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::going_nowhere</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">Going::going_nowhere</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5">§24.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_nothing_object_constant</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::going_somewhere</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">Going::going_somewhere</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5">§23.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::going_somewhere</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">Going::going_somewhere</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5">§24.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Descriptions::is_kind_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Descriptions::explicit_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -296,7 +296,7 @@ to make sure it actually exists. So this can be used to see if the need arises:
|
|||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::claim_noun</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">Going::claim_noun</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP23_5_4">§23.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::claim_noun</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">Going::claim_noun</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP24_5_4">§24.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">an</span><span class="plain-syntax"> == </span><span class="identifier-syntax">going_action</span><span class="plain-syntax">) && (</span><span class="function-syntax"><going-action-irregular-operand></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="4-gng.html#SP5" class="function-link"><span class="function-syntax">Going::go_nowhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-gng.html#SP5" class="function-link"><span class="function-syntax">Going::go_somewhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
|
@ -306,7 +306,7 @@ to make sure it actually exists. So this can be used to see if the need arises:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-apc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresscurrent">gng</li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-pap.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-apc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresscurrent">gng</li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-pap.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -135,7 +135,7 @@ an action.
|
|||
|
||||
<span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">NamedActionPatterns::by_name</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">NamedActionPatterns::by_name</span></span>:<br/><a href="4-nap.html#SP4">§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="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexicon::retrieve</span><span class="plain-syntax">(</span><span class="identifier-syntax">NAMED_AP_MC</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::to_named_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-ak.html#SP7" class="function-link"><span class="function-syntax">ARvalues::to_named_action_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="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>
|
||||
|
||||
|
@ -145,7 +145,7 @@ an action.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">nap</span><span class="plain-syntax">-></span><span class="element-syntax">text_of_declaration</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">nap</span><span class="plain-syntax">-></span><span class="element-syntax">compilation_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RTNamedActionPatterns::new</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">nap</span><span class="plain-syntax">-></span><span class="element-syntax">as_noun</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Nouns::new_proper_noun</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">NEUTER_GENDER</span><span class="plain-syntax">, </span><span class="identifier-syntax">ADD_TO_LEXICON_NTOPT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NAMED_AP_MC</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::from_named_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">nap</span><span class="plain-syntax">), </span><span class="identifier-syntax">Task::language_of_syntax</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NAMED_AP_MC</span><span class="plain-syntax">, </span><a href="4-ak.html#SP7" class="function-link"><span class="function-syntax">ARvalues::from_named_action_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nap</span><span class="plain-syntax">), </span><span class="identifier-syntax">Task::language_of_syntax</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">nap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -177,7 +177,7 @@ if and only if it appears in one of the patterns in the list:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresscurrent">nap</li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="5-pp.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresscurrent">nap</li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="5-pp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -73,26 +73,53 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Parse Action Patterns</b></li></ul></div>
|
||||
<p class="purpose">Turning text into APs.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>When we parse action patterns, we record why they fail, in order to make
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Action patterns, such as "taking a container" or "opening a closed door",
|
||||
are wrapped up as values here:
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><s-action-pattern-as-value></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">Wordings::mismatched_brackets</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">)) { ==> { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">Lexer::word</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">Wordings::first_wn</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">)) == </span><span class="Preform-identifier-syntax">OPENBRACE_V</span><span class="Preform-plain-syntax">) { ==> { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">pto</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">permit_trying_omission</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-function-syntax"><definite-article></span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">Wordings::first_word</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">)) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">) </span><span class="Preform-identifier-syntax">permit_trying_omission</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><action-pattern></span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">permit_trying_omission</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">pto</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax">) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><<rp>></span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><a href="4-apc.html#SP3" class="function-link"><span class="Preform-function-syntax">APClauses::get_val</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">, </span><span class="Preform-constant-syntax">ACTOR_AP_CLAUSE</span><span class="Preform-plain-syntax">)) &&</span>
|
||||
<span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">Dash::validate_parameter</span><span class="Preform-plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="Preform-function-syntax">APClauses::get_val</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">, </span><span class="Preform-constant-syntax">ACTOR_AP_CLAUSE</span><span class="Preform-plain-syntax">), </span><span class="Preform-identifier-syntax">K_person</span><span class="Preform-plain-syntax">) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><action-pattern></span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax">) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="4-ac.html#SP1" class="function-link"><span class="Preform-function-syntax">AConditions::new_action_TEST_VALUE</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-function-syntax"><<rp>></span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">) };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> ==> { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> };</span>
|
||||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>When we parse action patterns, we record why they fail, in order to make
|
||||
it easier to produce helpful error messages. (We can't simply fire off
|
||||
errors at the time they occur, because text is often parsed in several
|
||||
contexts at once, so just because it fails this one does not mean it is
|
||||
wrong.) PAPF stands for "parse action pattern failure".
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MISC_PAPF</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">NOPARTICIPLE_PAPF</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">MIXEDNOUNS_PAPF</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">WHEN_PAPF</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">WHENOKAY_PAPF</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">IMMISCIBLE_PAPF</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span>
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="Preform-constant-syntax">MISC_PAPF</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">NOPARTICIPLE_PAPF</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">2</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">MIXEDNOUNS_PAPF</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">3</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">WHEN_PAPF</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">4</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">WHENOKAY_PAPF</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">5</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">IMMISCIBLE_PAPF</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">6</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax">; </span><span class="comment-syntax"> one of the above</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">permit_trying_omission</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="comment-syntax"> allow the keyword 'trying' to be omitted</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">permit_nonconstant_action_parameters</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>NB: Next time this is rewritten - (1) handle in, in the presence of, with
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>NB: Next time this is rewritten - (1) handle in, in the presence of, with
|
||||
STV clauses; (2) get this right:
|
||||
</p>
|
||||
|
||||
|
@ -103,7 +130,7 @@ STV clauses; (2) get this right:
|
|||
say "Where did you want to go?"
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>First a much easier, parametric form of parsing, used for the APs which
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>First a much easier, parametric form of parsing, used for the APs which
|
||||
form the usage conditions for rules in object-based rulebooks.
|
||||
</p>
|
||||
|
||||
|
@ -111,23 +138,23 @@ form the usage conditions for rules in object-based rulebooks.
|
|||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ParseActionPatterns::parametric</span><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP2" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">parameter_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP4" class="function-link"><span class="function-syntax">ParseActionPatterns::parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP5" class="function-link"><span class="function-syntax">ParseActionPatterns::parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dash::validate_parameter</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>A useful utility: parsing a parameter in an action pattern.
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>A useful utility: parsing a parameter in an action pattern.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::parameter</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">ParseActionPatterns::parameter</span></span>:<br/><a href="4-pap.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::parameter</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">ParseActionPatterns::parameter</span></span>:<br/><a href="4-pap.html#SP4">§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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><action-parameter></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="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::new_UNKNOWN</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::verified_action_parameter</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ParseActionPatterns::verified_action_parameter</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP4">§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="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP4" class="function-link"><span class="function-syntax">ParseActionPatterns::parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP5" class="function-link"><span class="function-syntax">ParseActionPatterns::parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
|
@ -141,7 +168,7 @@ form the usage conditions for rules in object-based rulebooks.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">scanning_anl_only_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -164,7 +191,7 @@ form the usage conditions for rules in object-based rulebooks.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">anl</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>The main action pattern parser is called only by the following shell
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>The main action pattern parser is called only by the following shell
|
||||
routine, which exists in order to change some parsing rules.
|
||||
</p>
|
||||
|
||||
|
@ -177,7 +204,7 @@ matched action pattern.
|
|||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">last_successful_wording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING_INIT</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">prevailing_ap_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>In fact these codes aren't used any more:
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>In fact these codes aren't used any more:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">ACTOR_REQUESTED</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>
|
||||
|
@ -186,7 +213,7 @@ matched action pattern.
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">ACTOR_EXPLICITLY_PLAYER</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">ACTOR_IMPLICITLY_PLAYER</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>Action patterns are textual descriptions which act as predicates on actions,
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Action patterns are textual descriptions which act as predicates on actions,
|
||||
that is, they are descriptions which are true of some actions and false of
|
||||
others. For example,
|
||||
</p>
|
||||
|
@ -234,7 +261,7 @@ These are always present tense, and can't be negated.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core-actor></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMPLICITLY_PLAYER, RP[1] };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>The second version is for contexts where the AP occurs as a condition: e.g.,
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>The second version is for contexts where the AP occurs as a condition: e.g.,
|
||||
in a sentence like "if we have taken a jewel". Since these can occur in
|
||||
both tenses and can be negated ("if we are not taking a jewel"), there are
|
||||
four combinations:
|
||||
|
@ -280,7 +307,7 @@ four combinations:
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-past-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>There is one more tweak at this top level. Inform allows an ambiguous but
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>There is one more tweak at this top level. Inform allows an ambiguous but
|
||||
shorter and more natural syntax in which the actor's name simply appears at
|
||||
the front of the AP:
|
||||
</p>
|
||||
|
@ -302,7 +329,7 @@ actorless possibility can always be written.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><actor-description></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; action_pattern *ap = *XP; APClauses::clear_request(ap); APClauses::set_val(ap, ACTOR_AP_CLAUSE, RP[1]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>And this voracious token matches the actor's name as an initial excerpt,
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>And this voracious token matches the actor's name as an initial excerpt,
|
||||
which is much faster than exhaustive searching. It tries to break just before
|
||||
any "-ing" word (i.e., participle) which is not inside parentheses; but only
|
||||
if the resulting name matches <action-parameter> as a constant,
|
||||
|
@ -332,9 +359,9 @@ would match as an abbreviated form of the name of "angry waiting man".
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-function-syntax"><k-kind></span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">Wordings::up_to</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">i</span><span class="Preform-plain-syntax">-1))) </span><span class="Preform-reserved-syntax">continue</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">parse_node</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">try_stem</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">NULL</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">instance</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">I</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">old_state</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP12" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::suppress</span></a><span class="Preform-plain-syntax">();</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">old_state</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP13" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::suppress</span></a><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-function-syntax"><action-parameter></span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">Wordings::up_to</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">i</span><span class="Preform-plain-syntax">-1))) </span><span class="Preform-identifier-syntax">try_stem</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><<rp>></span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><a href="4-pap.html#SP12" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::resume</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">old_state</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><a href="4-pap.html#SP13" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::resume</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">old_state</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">k</span><span class="Preform-plain-syntax"> = </span><span class="Preform-constant-syntax">0</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">LOOP_THROUGH_WORDING</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">j</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">Wordings::up_to</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">i</span><span class="Preform-plain-syntax">-1))</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">Vocabulary::test_flags</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">j</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">ACTION_PARTICIPLE_MC</span><span class="Preform-plain-syntax">)) </span><span class="Preform-identifier-syntax">k</span><span class="Preform-plain-syntax">++;</span>
|
||||
|
@ -358,20 +385,20 @@ would match as an abbreviated form of the name of "angry waiting man".
|
|||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ParseActionPatterns::suppress</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">ParseActionPatterns::suppress</span></span>:<br/><a href="4-pap.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ParseActionPatterns::suppress</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">ParseActionPatterns::suppress</span></span>:<br/><a href="4-pap.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">old_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">suppress_ap_parsing</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">suppress_ap_parsing</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">old_state</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">ParseActionPatterns::resume</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">ParseActionPatterns::resume</span></span>:<br/><a href="4-pap.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">old_state</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParseActionPatterns::resume</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">ParseActionPatterns::resume</span></span>:<br/><a href="4-pap.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">old_state</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">suppress_ap_parsing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">old_state</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>That completes the top level, and we can forget about actors. All of those
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>That completes the top level, and we can forget about actors. All of those
|
||||
productions come down now to just two nonterminals, one for the present tense,
|
||||
</p>
|
||||
|
||||
|
@ -399,19 +426,19 @@ trimmed away;
|
|||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">suppress_ap_parsing</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">FALSE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP15" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::inner</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">IS_TENSE</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP16" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::inner</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">IS_TENSE</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">) { ==> { -, </span><span class="Preform-identifier-syntax">ap</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">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> };</span>
|
||||
<span class="Preform-plain-syntax">}</span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-pattern-past-core></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_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP15" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::inner</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">HASBEEN_TENSE</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP16" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::inner</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">HASBEEN_TENSE</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">) { ==> { -, </span><span class="Preform-identifier-syntax">ap</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">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> };</span>
|
||||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>"Doing it" is not the happiest of syntaxes. The idea is for this to be
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>"Doing it" is not the happiest of syntaxes. The idea is for this to be
|
||||
a sort of pronoun for actions, allowing for anaphora, but to parse such things
|
||||
naturally in all cases is wishful thinking. It enables us to write, e.g.:
|
||||
</p>
|
||||
|
@ -429,10 +456,10 @@ possibility for confusion is too great; perhaps we should just cut this idea.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">doing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">it</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::inner</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">ParseActionPatterns::inner</span></span>:<br/><a href="4-pap.html#SP13">§13</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">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::inner</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">ParseActionPatterns::inner</span></span>:<br/><a href="4-pap.html#SP14">§14</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">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">OPENBRACE_V</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::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"PAP on illegal word range"</span><span class="plain-syntax">);</span>
|
||||
|
@ -472,7 +499,7 @@ possibility for confusion is too great; perhaps we should just cut this idea.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>Anyway, we are now down to level 3: all action patterns have been whittled
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>Anyway, we are now down to level 3: all action patterns have been whittled
|
||||
down to a single use of <ap-common-core>. Our next step is to recognise
|
||||
a condition attached with "when":
|
||||
</p>
|
||||
|
@ -485,7 +512,7 @@ a condition attached with "when":
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, NULL }; if (pap_failure_reason != WHENOKAY_PAPF) pap_failure_reason = WHEN_PAPF; return FALSE; </span><span class="Preform-comment-syntax"> used only to diagnose problems</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b><condition-in-ap> is really just <spec-condition> in disguise — i.e.,
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b><condition-in-ap> is really just <spec-condition> in disguise — i.e.,
|
||||
it matches a standard Inform condition — but it's implemented as an internal
|
||||
to enable Inform to set up a stack frame if there isn't one already, and so on.
|
||||
</p>
|
||||
|
@ -515,7 +542,7 @@ to enable Inform to set up a stack frame if there isn't one already, and so on.
|
|||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>Level 4 now. The optional "in the presence of":
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>Level 4 now. The optional "in the presence of":
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
|
@ -524,7 +551,7 @@ to enable Inform to set up a stack frame if there isn't one already, and so on.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-common-core-inner-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>Level 5 now. The initial "in" clause, e.g., "in the Pantry", requires
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>Level 5 now. The initial "in" clause, e.g., "in the Pantry", requires
|
||||
special handling to prevent it from clashing with other interpretations of
|
||||
"in" elsewhere in the grammar. It's perhaps unexpected that "in the Pantry"
|
||||
is valid as an AP, but this enables many natural-looking rules to be written
|
||||
|
@ -533,11 +560,11 @@ is valid as an AP, but this enables many natural-looking rules to be written
|
|||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><ap-common-core-inner-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP19_1" class="named-paragraph-link"><span class="named-paragraph">Make an actionless action pattern, specifying room only</span><span class="named-paragraph-number">19.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP20_1" class="named-paragraph-link"><span class="named-paragraph">Make an actionless action pattern, specifying room only</span><span class="named-paragraph-number">20.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-common-core-inner-inner-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP19_1" class="paragraph-anchor"></a><b>§19.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an actionless action pattern, specifying room only</span><span class="named-paragraph-number">19.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP20_1" class="paragraph-anchor"></a><b>§20.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make an actionless action pattern, specifying room only</span><span class="named-paragraph-number">20.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -549,8 +576,8 @@ is valid as an AP, but this enables many natural-looking rules to be written
|
|||
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::ap_store</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP19">§19</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>And that's as far down as we go: to level 6. Most of the complexity is gone
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP20">§20</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>And that's as far down as we go: to level 6. Most of the complexity is gone
|
||||
now, but what's left can't very efficiently be written in Preform. Essentially
|
||||
we apply <action-list> to the text and then parse the operands using
|
||||
<action-operand>, though it's a bit more involved because we also recognise
|
||||
|
@ -574,7 +601,7 @@ box" makes no sense since only one is transitive).
|
|||
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">LOGIF</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ACTION_PATTERN_PARSING</span><span class="Preform-plain-syntax">, </span><span class="Preform-string-syntax">"Parsing action pattern: %W\n"</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">LOG_INDENT</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_pattern</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP23" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::dash</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_pattern</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP24" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::dash</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">LOG_OUTDENT</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><a href="4-ap2.html#SP3" class="function-link"><span class="Preform-function-syntax">ActionPatterns::is_valid</span></a><span class="Preform-plain-syntax">(&</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="4-ap2.html#SP3" class="function-link"><span class="Preform-function-syntax">ActionPatterns::ap_store</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">) };</span>
|
||||
|
@ -585,7 +612,7 @@ box" makes no sense since only one is transitive).
|
|||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>The "operands" of an action pattern are the nouns to which it applies: for
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>The "operands" of an action pattern are the nouns to which it applies: for
|
||||
example, in "Kevin taking or dropping something", the operand is "something".
|
||||
We treat words like "something" specially to avoid them being read as
|
||||
"some thing" and thus forcing the kind of the operand to be "thing".
|
||||
|
@ -602,7 +629,7 @@ We treat words like "something" specially to avoid them being read as
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">it</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { FALSE, - }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>Finally, then, <action-parameter>. Almost anything syntactically matches
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>Finally, then, <action-parameter>. Almost anything syntactically matches
|
||||
here — a constant, a description, a table entry, a variable, and so on.
|
||||
</p>
|
||||
|
||||
|
@ -619,11 +646,11 @@ here — a constant, a description, a table entry, a variable, and so on.
|
|||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>We can't put it off any longer. Here goes.
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>We can't put it off any longer. Here goes.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ParseActionPatterns::dash</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">ParseActionPatterns::dash</span></span>:<br/><a href="4-pap.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ParseActionPatterns::dash</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">ParseActionPatterns::dash</span></span>:<br/><a href="4-pap.html#SP21">§21</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">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">list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -632,19 +659,19 @@ here — a constant, a description, a table entry, a variable, and so on.
|
|||
<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#SP2" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">(); </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">text_of_pattern</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_3" class="named-paragraph-link"><span class="named-paragraph">PAR - (f) Parse Special Going Clauses</span><span class="named-paragraph-number">23.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_4" class="named-paragraph-link"><span class="named-paragraph">PAR - (i) Parse Initial Action Name List</span><span class="named-paragraph-number">23.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_5" class="named-paragraph-link"><span class="named-paragraph">PAR - (j) Parse Parameters</span><span class="named-paragraph-number">23.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_6" class="named-paragraph-link"><span class="named-paragraph">PAR - (k) Verify Mixed Action</span><span class="named-paragraph-number">23.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_1" class="named-paragraph-link"><span class="named-paragraph">With one small proviso, a valid action pattern has been parsed</span><span class="named-paragraph-number">23.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_3" class="named-paragraph-link"><span class="named-paragraph">PAR - (f) Parse Special Going Clauses</span><span class="named-paragraph-number">24.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_4" class="named-paragraph-link"><span class="named-paragraph">PAR - (i) Parse Initial Action Name List</span><span class="named-paragraph-number">24.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_5" class="named-paragraph-link"><span class="named-paragraph">PAR - (j) Parse Parameters</span><span class="named-paragraph-number">24.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_6" class="named-paragraph-link"><span class="named-paragraph">PAR - (k) Verify Mixed Action</span><span class="named-paragraph-number">24.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_1" class="named-paragraph-link"><span class="named-paragraph">With one small proviso, a valid action pattern has been parsed</span><span class="named-paragraph-number">24.1</span></a></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="plain-syntax"> </span><span class="identifier-syntax">Failed:</span><span class="plain-syntax"> ;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_2" class="named-paragraph-link"><span class="named-paragraph">No valid action pattern has been parsed</span><span class="named-paragraph-number">23.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_2" class="named-paragraph-link"><span class="named-paragraph">No valid action pattern has been parsed</span><span class="named-paragraph-number">24.2</span></a></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="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP23_1" class="paragraph-anchor"></a><b>§23.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">With one small proviso, a valid action pattern has been parsed</span><span class="named-paragraph-number">23.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP24_1" class="paragraph-anchor"></a><b>§24.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">With one small proviso, a valid action pattern has been parsed</span><span class="named-paragraph-number">24.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -666,8 +693,8 @@ here — a constant, a description, a table entry, a variable, and so on.
|
|||
<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">valid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">Failed</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Matched action pattern: $A\n"</span><span class="plain-syntax">, &</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23">§23</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_2" class="paragraph-anchor"></a><b>§23.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">No valid action pattern has been parsed</span><span class="named-paragraph-number">23.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24">§24</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_2" class="paragraph-anchor"></a><b>§24.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">No valid action pattern has been parsed</span><span class="named-paragraph-number">24.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -676,12 +703,12 @@ here — a constant, a description, a table entry, a variable, and so on.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">ap_clauses</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Parse action failed: %W\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23">§23</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_3" class="paragraph-anchor"></a><b>§23.3. </b>Special clauses are allowed after "going..."; trim them
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24">§24</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_3" class="paragraph-anchor"></a><b>§24.3. </b>Special clauses are allowed after "going..."; trim them
|
||||
away as they are recorded.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">PAR - (f) Parse Special Going Clauses</span><span class="named-paragraph-number">23.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">PAR - (f) Parse Special Going Clauses</span><span class="named-paragraph-number">24.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -714,13 +741,13 @@ away as they are recorded.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::up_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23">§23</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_4" class="paragraph-anchor"></a><b>§23.4. </b>Extract the information as to which actions are intended:
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24">§24</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_4" class="paragraph-anchor"></a><b>§24.4. </b>Extract the information as to which actions are intended:
|
||||
e.g., from "taking or dropping something", that it will be
|
||||
taking or dropping.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">PAR - (i) Parse Initial Action Name List</span><span class="named-paragraph-number">23.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">PAR - (i) Parse Initial Action Name List</span><span class="named-paragraph-number">24.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -729,8 +756,8 @@ taking or dropping.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">try_list</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"ANL from PAR(i):\n$L\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23">§23</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_5" class="paragraph-anchor"></a><b>§23.5. </b>Now to fill in the gaps. At this point we have the action name
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24">§24</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_5" class="paragraph-anchor"></a><b>§24.5. </b>Now to fill in the gaps. At this point we have the action name
|
||||
list as a linked list of all possible lexical matches, but want to
|
||||
whittle it down to remove those which do not semantically make
|
||||
sense. For instance, "taking inventory" has two possible lexical
|
||||
|
@ -748,23 +775,23 @@ crucial word position except for the one matched.
|
|||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_AP_POSITIONS</span><span class="plain-syntax"> </span><span class="constant-syntax">100</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">UNTHINKABLE_POSITION</span><span class="plain-syntax"> -1</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">PAR - (j) Parse Parameters</span><span class="named-paragraph-number">23.5</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">PAR - (j) Parse Parameters</span><span class="named-paragraph-number">24.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_positions</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">position_at</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_AP_POSITIONS</span><span class="plain-syntax">], </span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_AP_POSITIONS</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_5_1" class="named-paragraph-link"><span class="named-paragraph">Find the positions of individual action names, and their minimum parameter counts</span><span class="named-paragraph-number">23.5.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_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">23.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-pap.html#SP23_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">23.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-pap.html#SP24_5_1" class="named-paragraph-link"><span class="named-paragraph">Find the positions of individual action names, and their minimum parameter counts</span><span class="named-paragraph-number">24.5.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_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">24.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-pap.html#SP24_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">24.5.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">first_position</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::first_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">one_was_valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ANL</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Entry (%d):\n$8\n"</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">), </span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_5_4" class="named-paragraph-link"><span class="named-paragraph">Fill out the noun, second, room and nowhere fields of the AP as if this action were right</span><span class="named-paragraph-number">23.5.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_5_5" class="named-paragraph-link"><span class="named-paragraph">Check the validity of this speculative AP</span><span class="named-paragraph-number">23.5.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_5_4" class="named-paragraph-link"><span class="named-paragraph">Fill out the noun, second, room and nowhere fields of the AP as if this action were right</span><span class="named-paragraph-number">24.5.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_5_5" class="named-paragraph-link"><span class="named-paragraph">Check the validity of this speculative AP</span><span class="named-paragraph-number">24.5.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">one_was_valid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">first_position</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">one_was_valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">));</span>
|
||||
|
@ -778,32 +805,32 @@ crucial word position except for the one matched.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">one_was_valid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">Failed</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_5_6" class="named-paragraph-link"><span class="named-paragraph">Adjudicate between topic and other actions</span><span class="named-paragraph-number">23.5.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_5_6" class="named-paragraph-link"><span class="named-paragraph">Adjudicate between topic and other actions</span><span class="named-paragraph-number">24.5.6</span></a></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">"List before action winnowing:\n$L\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP23_5_7" class="named-paragraph-link"><span class="named-paragraph">Delete those action names which are to be deleted</span><span class="named-paragraph-number">23.5.7</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP24_5_7" class="named-paragraph-link"><span class="named-paragraph">Delete those action names which are to be deleted</span><span class="named-paragraph-number">24.5.7</span></a></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">"List after action winnowing:\n$L\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23">§23</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_5_1" class="paragraph-anchor"></a><b>§23.5.1. </b>For example, "taking inventory or waiting" produces two positions, words
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24">§24</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_5_1" class="paragraph-anchor"></a><b>§24.5.1. </b>For example, "taking inventory or waiting" produces two positions, words
|
||||
0 and 3, and minimum parameter count 0 in each case. ("Taking inventory"
|
||||
can be read as "taking (inventory)", par-count 1, or "taking inventory",
|
||||
par-count 0, so the minimum is 0.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find the positions of individual action names, and their minimum parameter counts</span><span class="named-paragraph-number">23.5.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find the positions of individual action names, and their minimum parameter counts</span><span class="named-paragraph-number">24.5.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ANL</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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-pap.html#SP23_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">23.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-pap.html#SP24_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">24.5.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">pos</span><span class="plain-syntax">] == </span><span class="constant-syntax">UNTHINKABLE_POSITION</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) < </span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">pos</span><span class="plain-syntax">]))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">position_min_parc</span><span class="plain-syntax">[</span><span class="identifier-syntax">pos</span><span class="plain-syntax">] = </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::parc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23_5">§23.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_5_1_1" class="paragraph-anchor"></a><b>§23.5.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find the position word of this particular action name</span><span class="named-paragraph-number">23.5.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24_5">§24.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_5_1_1" class="paragraph-anchor"></a><b>§24.5.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find the position word of this particular action name</span><span class="named-paragraph-number">24.5.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -818,8 +845,8 @@ par-count 0, so the minimum is 0.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">no_positions</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23_5_1">§23.5.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_5_2" class="paragraph-anchor"></a><b>§23.5.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Report to the debugging log on the action decomposition</span><span class="named-paragraph-number">23.5.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24_5_1">§24.5.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_5_2" class="paragraph-anchor"></a><b>§24.5.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Report to the debugging log on the action decomposition</span><span class="named-paragraph-number">24.5.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -830,14 +857,14 @@ par-count 0, so the minimum is 0.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">position_at</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">], </span><span class="identifier-syntax">min</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23_5">§23.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_5_3" class="paragraph-anchor"></a><b>§23.5.3. </b>The following test is done to reject patterns like "taking ball or dropping
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24_5">§24.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_5_3" class="paragraph-anchor"></a><b>§24.5.3. </b>The following test is done to reject patterns like "taking ball or dropping
|
||||
bat", which have a positive minimum parameter count in more than one position;
|
||||
which means there couldn't be an action pattern which shared the same noun
|
||||
description.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find how many different positions have each possible minimum count</span><span class="named-paragraph-number">23.5.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find how many different positions have each possible minimum count</span><span class="named-paragraph-number">24.5.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -853,15 +880,15 @@ description.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">failure_this_call</span><span class="plain-syntax"> = </span><span class="constant-syntax">MIXEDNOUNS_PAPF</span><span class="plain-syntax">; </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">Failed</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23_5">§23.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_5_4" class="paragraph-anchor"></a><b>§23.5.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Fill out the noun, second, room and nowhere fields of the AP as if this action were right</span><span class="named-paragraph-number">23.5.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24_5">§24.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_5_4" class="paragraph-anchor"></a><b>§24.5.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Fill out the noun, second, room and nowhere fields of the AP as if this action were right</span><span class="named-paragraph-number">24.5.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">ap_clauses</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-gng.html#SP8" class="function-link"><span class="function-syntax">Going::claim_noun</span></a><span class="plain-syntax">(</span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">), &</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pap.html#SP24" class="function-link"><span class="function-syntax">ParseActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pap.html#SP25" class="function-link"><span class="function-syntax">ParseActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">))) {</span>
|
||||
|
@ -869,20 +896,20 @@ description.
|
|||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_second</span></a><span class="plain-syntax">(</span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">)), </span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> && (</span><span class="function-syntax"><understanding-action-irregular-operand></span><span class="plain-syntax">(</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">)))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_grammar_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="comment-syntax"> Why no GV here?</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="4-ak.html#SP7" class="function-link"><span class="function-syntax">ARvalues::from_grammar_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="comment-syntax"> Why no GV here?</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pap.html#SP24" class="function-link"><span class="function-syntax">ParseActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pap.html#SP25" class="function-link"><span class="function-syntax">ParseActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pap.html#SP24" class="function-link"><span class="function-syntax">ParseActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pap.html#SP25" class="function-link"><span class="function-syntax">ParseActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23_5">§23.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_5_5" class="paragraph-anchor"></a><b>§23.5.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check the validity of this speculative AP</span><span class="named-paragraph-number">23.5.5</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24_5">§24.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_5_5" class="paragraph-anchor"></a><b>§24.5.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check the validity of this speculative AP</span><span class="named-paragraph-number">24.5.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -900,8 +927,8 @@ description.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::validate</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23_5">§23.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_5_6" class="paragraph-anchor"></a><b>§23.5.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Adjudicate between topic and other actions</span><span class="named-paragraph-number">23.5.6</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24_5">§24.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_5_6" class="paragraph-anchor"></a><b>§24.5.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Adjudicate between topic and other actions</span><span class="named-paragraph-number">24.5.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -942,15 +969,15 @@ description.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23_5">§23.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_5_7" class="paragraph-anchor"></a><b>§23.5.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Delete those action names which are to be deleted</span><span class="named-paragraph-number">23.5.7</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24_5">§24.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_5_7" class="paragraph-anchor"></a><b>§24.5.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Delete those action names which are to be deleted</span><span class="named-paragraph-number">24.5.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="4-anl.html#SP6" class="function-link"><span class="function-syntax">ActionNameLists::remove_entries_marked_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23_5">§23.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23_6" class="paragraph-anchor"></a><b>§23.6. </b>Not all actions can cohabit. We require that as far as the user has
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24_5">§24.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24_6" class="paragraph-anchor"></a><b>§24.6. </b>Not all actions can cohabit. We require that as far as the user has
|
||||
specified the parameters, the actions in the list must all agree (i) to be
|
||||
allowed to have such a parameter, and (ii) to be allowed to have a
|
||||
parameter of the same type. Thus "waiting or taking something" fails
|
||||
|
@ -960,7 +987,7 @@ that the "doing anything" action is always allowed a parameter (this is
|
|||
the case when the first action name in the list is <span class="extract"><span class="extract-syntax">NULL</span></span>).
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">PAR - (k) Verify Mixed Action</span><span class="named-paragraph-number">23.6</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">PAR - (k) Verify Mixed Action</span><span class="named-paragraph-number">24.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1010,13 +1037,13 @@ the case when the first action name in the list is <span class="extract"><span c
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">Failed</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP23">§23</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>And an anticlimactic little routine for putting objects
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP24">§24</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b>And an anticlimactic little routine for putting objects
|
||||
into action patterns in the noun or second noun position.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParseActionPatterns::put_action_object_into_ap</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">ParseActionPatterns::put_action_object_into_ap</span></span>:<br/><a href="4-pap.html#SP23_5_4">§23.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParseActionPatterns::put_action_object_into_ap</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">ParseActionPatterns::put_action_object_into_ap</span></span>:<br/><a href="4-pap.html#SP24_5_4">§24.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">any_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><action-operand></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -1034,7 +1061,7 @@ into action patterns in the noun or second noun position.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-gng.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresscurrent">pap</li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-nap.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-gng.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-ak.html">ak</a></li><li class="progresssection"><a href="4-ac.html">ac</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresscurrent">pap</li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-nap.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -169,7 +169,7 @@ will simply compile a <span class="extract"><span class="extract-syntax">parse_n
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">gv</span><span class="plain-syntax">-></span><span class="element-syntax">gv_parse_name_iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Parsing::Tokens::General::compile_parse_name_property</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">PL::Parsing::Tokens::General::compile_parse_name_property</span></span>:<br/>Parsing Plugin - <a href="5-pp.html#SP5_2">§5.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Parsing::Tokens::General::compile_parse_name_property</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">PL::Parsing::Tokens::General::compile_parse_name_property</span></span>:<br/>Parsing Plugin - <a href="5-pp.html#SP6_2">§6.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">symb</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">grammar_verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-></span><span class="element-syntax">understand_as_this_object</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-gv.html#SP19" class="function-link"><span class="function-syntax">PL::Parsing::Verbs::is_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gv</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -507,7 +507,7 @@ look seriously at tokens is in Phase II.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_grammar_verb</span><span class="plain-syntax">(</span><span class="function-syntax"><<grammar_verb:named>></span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="4-ak.html#SP7" class="function-link"><span class="function-syntax">ARvalues::from_grammar_verb</span></a><span class="plain-syntax">(</span><span class="function-syntax"><<grammar_verb:named>></span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="5-gv.html#SP24" class="function-link"><span class="function-syntax">PL::Parsing::Verbs::determine</span></a><span class="plain-syntax">(</span><span class="function-syntax"><<grammar_verb:named>></span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1); </span><span class="comment-syntax"> this is where Phase II recurses</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_grammar_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
@ -1387,7 +1387,7 @@ nothing else.
|
|||
<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">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_grammar_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gv</span><span class="plain-syntax"> = </span><a href="4-ak.html#SP7" class="function-link"><span class="function-syntax">ARvalues::to_grammar_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
|
|
|
@ -84,10 +84,11 @@ chapter.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">PRODUCTION_LINE_PLUG</span><span class="plain-syntax">, </span><a href="5-pp.html#SP1" class="function-link"><span class="function-syntax">ParsingPlugin::production_line</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="5-pp.html#SP1" class="function-link"><span class="function-syntax">ParsingPlugin::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_VARIABLE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="5-pp.html#SP4" class="function-link"><span class="function-syntax">ParsingPlugin::new_variable_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPARE_CONSTANT_PLUG</span><span class="plain-syntax">, </span><a href="5-pp.html#SP2" class="function-link"><span class="function-syntax">ParsingPlugin::compare_CONSTANT</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_VARIABLE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="5-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPlugin::new_variable_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_SUBJECT_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="5-pp.html#SP1" class="function-link"><span class="function-syntax">ParsingPlugin::new_subject_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_PERMISSION_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="5-gp.html#SP5" class="function-link"><span class="function-syntax">Visibility::new_permission_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPLETE_MODEL_PLUG</span><span class="plain-syntax">, </span><a href="5-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPlugin::complete_model</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPLETE_MODEL_PLUG</span><span class="plain-syntax">, </span><a href="5-pp.html#SP6" class="function-link"><span class="function-syntax">ParsingPlugin::complete_model</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="function-syntax">ParsingPlugin::production_line</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">debugging</span><span class="plain-syntax">,</span>
|
||||
|
@ -128,7 +129,22 @@ chapter.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>A number of global variables are given special treatment here, including
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPlugin::compare_CONSTANT</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">ParsingPlugin::compare_CONSTANT</span></span>:<br/><a href="5-pp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_understanding</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-ak.html#SP7" class="function-link"><span class="function-syntax">ARvalues::to_grammar_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">) == </span><a href="4-ak.html#SP7" class="function-link"><span class="function-syntax">ARvalues::to_grammar_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>A number of global variables are given special treatment here, including
|
||||
a whole family with names like "the K understood", for different kinds K.
|
||||
This is an awkward contrivance to bridge Inform 7, which is typed, with the
|
||||
original Inform 6 parser at runtime, whose data is typeless.
|
||||
|
@ -144,7 +160,7 @@ original Inform 6 parser at runtime, whose data is typeless.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">person</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asked</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 5, - }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">real_location_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -154,10 +170,10 @@ original Inform 6 parser at runtime, whose data is typeless.
|
|||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_second_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_actor_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPlugin::new_variable_notify</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">ParsingPlugin::new_variable_notify</span></span>:<br/><a href="5-pp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPlugin::new_variable_notify</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">ParsingPlugin::new_variable_notify</span></span>:<br/><a href="5-pp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-parsing-variables>(var-></span><span class="element-syntax">name</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">:</span>
|
||||
|
@ -176,7 +192,7 @@ original Inform 6 parser at runtime, whose data is typeless.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>Once the traverse is done, we can infer values for the two key Inter properties
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>Once the traverse is done, we can infer values for the two key Inter properties
|
||||
for parsing:
|
||||
</p>
|
||||
|
||||
|
@ -188,7 +204,7 @@ for parsing:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">P_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="function-syntax">ParsingPlugin::complete_model</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">ParsingPlugin::complete_model</span></span>:<br/><a href="5-pp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPlugin::complete_model</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">ParsingPlugin::complete_model</span></span>:<br/><a href="5-pp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_V</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ValueProperties::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"name"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">);</span>
|
||||
|
@ -199,25 +215,25 @@ for parsing:
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter name property</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter parse-name property</span><span class="named-paragraph-number">5.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP5_3" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter action-bitmap property</span><span class="named-paragraph-number">5.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter name property</span><span class="named-paragraph-number">6.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter parse-name property</span><span class="named-paragraph-number">6.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter action-bitmap property</span><span class="named-paragraph-number">6.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BASE_KINDS</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter parse-name property</span><span class="named-paragraph-number">5.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter parse-name property</span><span class="named-paragraph-number">6.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP5_3" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter action-bitmap property</span><span class="named-paragraph-number">5.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-pp.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Assert the Inter action-bitmap property</span><span class="named-paragraph-number">6.3</span></a></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>
|
||||
<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">Assert the Inter name property</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP6_1" class="paragraph-anchor"></a><b>§6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the Inter name property</span><span class="named-paragraph-number">6.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -238,12 +254,12 @@ for parsing:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTParsing::name_property_array</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">PW</span><span class="plain-syntax">, </span><span class="identifier-syntax">from_kind</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-pp.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_2" class="paragraph-anchor"></a><b>§5.2. </b>We attach numbered parse name routines as properties for any object
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-pp.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2" class="paragraph-anchor"></a><b>§6.2. </b>We attach numbered parse name routines as properties for any object
|
||||
where grammar has specified a need. (By default, this will not happen.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the Inter parse-name property</span><span class="named-paragraph-number">5.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the Inter parse-name property</span><span class="named-paragraph-number">6.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -252,8 +268,8 @@ where grammar has specified a need. (By default, this will not happen.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ValueProperties::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_parse_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-pp.html#SP5">§5</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_3" class="paragraph-anchor"></a><b>§5.3. </b>The action bitmap is an array of bits attached to each object, one
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-pp.html#SP6">§6</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3" class="paragraph-anchor"></a><b>§6.3. </b>The action bitmap is an array of bits attached to each object, one
|
||||
for each action, which records whether that action has yet applied
|
||||
successfully to that object. This is used at run-time to handle past
|
||||
tense conditions such as "the jewels have been taken". Note that
|
||||
|
@ -262,7 +278,7 @@ to ensure that it will be inherited by all Inter objects of this class,
|
|||
i.e., all Inter objects corresponding to I7 things.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the Inter action-bitmap property</span><span class="named-paragraph-number">5.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert the Inter action-bitmap property</span><span class="named-paragraph-number">6.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -274,7 +290,7 @@ i.e., all Inter objects corresponding to I7 things.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ValueProperties::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_action_bitmap</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-pp.html#SP5">§5</a> (twice).</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-pp.html#SP6">§6</a> (twice).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-nap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresschapter"><a href="4-ap.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">pp</li><li class="progresssection"><a href="5-pnaa.html">pnaa</a></li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-pnaa.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -108,7 +108,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">understanding_reference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">understanding_reference</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure understanding_item is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 4/apc, 5/gl and here.</li><li>The structure understanding_reference is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 4/apc, 5/gl and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure understanding_item is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 4/ea, 4/apc, 5/gl and here.</li><li>The structure understanding_reference is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 4/ea, 4/apc, 5/gl and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>New grammar arrives in the system in two ways: primarily by means of explicit
|
||||
Understand sentences in the source text, but also secondarily in the form
|
||||
of table entries or other values used to match against snippets. For example:
|
||||
|
|
|
@ -198,6 +198,16 @@
|
|||
<spon class="sectiontitle">Actions-Only Nodes and Annotations</span></a> -
|
||||
<span class="sectionpurpose">Additional syntax tree node and annotation types used by the actions plugin.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-ak.html">
|
||||
<spon class="sectiontitle">Action Kinds</span></a> -
|
||||
<span class="sectionpurpose">Three action-related kinds of value.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-ac.html">
|
||||
<spon class="sectiontitle">Action Conditions</span></a> -
|
||||
<span class="sectionpurpose">A special condition for testing against action patterns.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-act.html">
|
||||
<spon class="sectiontitle">Actions</span></a> -
|
||||
|
@ -228,6 +238,11 @@
|
|||
<spon class="sectiontitle">Action Patterns</span></a> -
|
||||
<span class="sectionpurpose">An action pattern is a description which may match many actions or none. The text "doing something" matches every action, while "throwing something at a door in a dark room" is seldom matched.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-ea.html">
|
||||
<spon class="sectiontitle">Explicit Actions</span></a> -
|
||||
<span class="sectionpurpose">An exactly specified action is called "explicit".</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-apc.html">
|
||||
<spon class="sectiontitle">Action Pattern Clauses</span></a> -
|
||||
|
|
|
@ -267,8 +267,9 @@ storage: the following simple structures are used for this.
|
|||
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_VALUE_NT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">AConditions::is_action_TEST_VALUE</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionPatterns::action_from_TEST</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">tense</span><span class="plain-syntax"> != </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Here we go! $A\n"</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">duration</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Occurrence::units</span><span class="plain-syntax">(</span><span class="identifier-syntax">duration</span><span class="plain-syntax">) == </span><span class="identifier-syntax">TIMES_UNIT</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Occurrence::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">duration</span><span class="plain-syntax">) >= </span><span class="constant-syntax">2</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_NoMoreRonNewcombMoment</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"a condition like 'we have X', where X is an action, has either "</span>
|
||||
|
|
|
@ -512,7 +512,7 @@ parser needs our help in the first place.)
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><action-pattern></span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">as_parsed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Conditions::new_TEST_ACTION</span><span class="plain-syntax">(</span><span class="function-syntax"><<rp>></span><span class="plain-syntax">, </span><span class="identifier-syntax">XW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">as_parsed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AConditions::new_action_TEST_VALUE</span><span class="plain-syntax">(</span><span class="function-syntax"><<rp>></span><span class="plain-syntax">, </span><span class="identifier-syntax">XW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</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">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-pi.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Parse any other token</span><span class="named-paragraph-number">5.2</span></a></span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -429,7 +429,7 @@ infrastructure, and we access it with a single call.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PluginManager::active</span><span class="plain-syntax">(</span><span class="identifier-syntax">actions_plugin</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"actions plugin inactive"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_action_name</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="identifier-syntax">Rvalues::to_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ARvalues::to_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Holsters::data_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><a href="5-act.html#SP1" class="function-link"><span class="function-syntax">RTActions::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax">) </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::holster</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -428,9 +428,10 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTActionPatterns::compile_pattern_match</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">RTActionPatterns::compile_pattern_match</span></span>:<br/><a href="5-ap.html#SP5">§5</a><br/>Actions - <a href="5-act.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">naming_mode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cpm_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">needed</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CPM_CLAUSES</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">needed_apoc</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CPM_CLAUSES</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling action pattern:\n $A"</span><span class="plain-syntax">, &</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling action pattern:\n $A\n"</span><span class="plain-syntax">, &</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">duration</span><span class="plain-syntax">) {</span>
|
||||
<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">"As past action\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Chronology::compile_past_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">duration</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</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>
|
||||
|
|
|
@ -86,7 +86,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">values</a></li><li><a href="index.html#2">Chapter 2: Specifications</a></li><li><b>Conditions</b></li></ul></div>
|
||||
<p class="purpose">States of being which at any given point, at run-time, might be true or false.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-cnd.html#SP1">§1. Creation</a></li><li><a href="2-cnd.html#SP12">§12. Pretty-printing</a></li><li><a href="2-cnd.html#SP13">§13. Specificity</a></li><li><a href="2-cnd.html#SP15">§15. Compiling</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-cnd.html#SP1">§1. Creation</a></li><li><a href="2-cnd.html#SP11">§11. Pretty-printing</a></li><li><a href="2-cnd.html#SP12">§12. Specificity</a></li><li><a href="2-cnd.html#SP14">§14. Compiling</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Creation. </b>In Inform, conditions are not values, nor can values be used directly as
|
||||
conditions: we therefore need to provide the logical operations of AND, OR,
|
||||
|
@ -150,7 +150,7 @@ in any other way.)
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Conditions::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">time_period</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEST_PROPOSITION_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cnd.html#SP11" class="function-link"><span class="function-syntax">Conditions::attach_historic_requirement</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">tp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::attach_historic_requirement</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">tp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -204,54 +204,13 @@ exactly feasible, since the specification data field is 16 bits wide.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::new_TEST_ACTION</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</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">"null action pattern"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEST_VALUE_NT</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">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax"> = </span><a href="2-rvl.html#SP2" class="function-link"><span class="function-syntax">Rvalues::from_action_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Conditions::new_TEST_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">Conditions::new_TEST_ACTION</span></span>:<br/>Type Expressions and Values - <a href="4-teav.html#SP22">§22</a><br/>Conditions and Phrases - <a href="4-cap.html#SP3">§3</a>, <a href="4-cap.html#SP7">§7</a>, <a href="4-cap.html#SP8_1">§8.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"can't make test action without IF module"</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="identifier-syntax">endif</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Conditions::is_TEST_ACTION</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">Conditions::is_TEST_ACTION</span></span>:<br/><a href="2-cnd.html#SP15">§15</a><br/>Dash - <a href="2-dsh.html#SP18_5_1">§18.5.1</a><br/>Literal Lists - <a href="3-ll.html#SP8">§8</a><br/>Enter the S-Parser - <a href="4-ets.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_VALUE_NT</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><a href="2-rvl.html#SP3" class="function-link"><span class="function-syntax">Rvalues::to_action_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-rvl.html#SP3" class="function-link"><span class="function-syntax">Rvalues::to_explicit_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">)))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Conditions::action_tested</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">Conditions::action_tested</span></span>:<br/><a href="2-cnd.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::is_TEST_ACTION</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"action improperly extracted"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"can't perform action_tested without IF module"</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="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The function Conditions::new_TEST_ACTION is used in Type Expressions and Values (<a href="4-teav.html#SP22">§22</a>), Conditions and Phrases (<a href="4-cap.html#SP3">§3</a>, <a href="4-cap.html#SP7">§7</a>, <a href="4-cap.html#SP8_1">§8.1</a>).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Since, in principle, any condition might also have a time period attached
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Since, in principle, any condition might also have a time period attached
|
||||
to it, we need a follow-up routine to attach this as necessary to a newly
|
||||
created condition:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Conditions::attach_tense</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">Conditions::attach_tense</span></span>:<br/>Verbal and Relative Clauses - <a href="4-varc.html#SP11_3">§11.3</a><br/>Conditions and Phrases - <a href="4-cap.html#SP8_1">§8.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cond</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">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Conditions::attach_tense</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">Conditions::attach_tense</span></span>:<br/>Verbal and Relative Clauses - <a href="4-varc.html#SP11_3">§11.3</a><br/>Conditions and Phrases - <a href="4-cap.html#SP8_1">§8.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cond</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="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">grammatical_usage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gu</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Stock::new_usage</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Task::language_of_syntax</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Stock::add_form_to_usage</span><span class="plain-syntax">(</span><span class="identifier-syntax">gu</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lcon::set_tense</span><span class="plain-syntax">(</span><span class="identifier-syntax">Lcon::base</span><span class="plain-syntax">(), </span><span class="identifier-syntax">t</span><span class="plain-syntax">));</span>
|
||||
|
@ -265,13 +224,13 @@ created condition:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Conditions::attach_historic_requirement</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">Conditions::attach_historic_requirement</span></span>:<br/><a href="2-cnd.html#SP5">§5</a><br/>Conditions and Phrases - <a href="4-cap.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cond</span><span class="plain-syntax">, </span><span class="identifier-syntax">time_period</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tp</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Conditions::attach_historic_requirement</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">Conditions::attach_historic_requirement</span></span>:<br/><a href="2-cnd.html#SP5">§5</a><br/>Conditions and Phrases - <a href="4-cap.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cond</span><span class="plain-syntax">, </span><span class="identifier-syntax">time_period</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">cond</span><span class="plain-syntax">, </span><span class="identifier-syntax">AMBIGUITY_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">amb</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">cond</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cond</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">; </span><span class="identifier-syntax">cond</span><span class="plain-syntax">; </span><span class="identifier-syntax">cond</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cond</span><span class="plain-syntax">-></span><span class="identifier-syntax">next_alternative</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reading</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">cond</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">reading</span><span class="plain-syntax">-></span><span class="identifier-syntax">next_alternative</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">reading</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP11" class="function-link"><span class="function-syntax">Conditions::attach_historic_requirement</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">reading</span><span class="plain-syntax">, </span><span class="identifier-syntax">tp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">reading</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::attach_historic_requirement</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">reading</span><span class="plain-syntax">, </span><span class="identifier-syntax">tp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">reading</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</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">amb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SyntaxTree::add_reading</span><span class="plain-syntax">(</span><span class="identifier-syntax">amb</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">reading</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cond</span><span class="plain-syntax">));</span>
|
||||
|
@ -289,10 +248,10 @@ created condition:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Pretty-printing. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Pretty-printing. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Conditions::write_out_in_English</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">Conditions::write_out_in_English</span></span>:<br/>Specifications - <a href="2-spc.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Conditions::write_out_in_English</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">Conditions::write_out_in_English</span></span>:<br/>Specifications - <a href="2-spc.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-spc.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dsc.html#SP11" class="function-link"><span class="function-syntax">Descriptions::write_out_in_English</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_VALUE_NT</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">))) {</span>
|
||||
|
@ -306,7 +265,7 @@ created condition:
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Specificity. </b>We will need a way of determining which of two conditions is more complex,
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Specificity. </b>We will need a way of determining which of two conditions is more complex,
|
||||
so that action-based rules with "when..." clauses tacked on can be sorted:
|
||||
the following is used to compare such "when..." conditions.
|
||||
</p>
|
||||
|
@ -318,33 +277,33 @@ beat shorter ones.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Conditions::compare_specificity_of_CONDITIONs</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">spec2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP14" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count2</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP14" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec2</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><a href="2-cnd.html#SP13" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count2</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP13" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">count1</span><span class="plain-syntax"> > </span><span class="identifier-syntax">count2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">count1</span><span class="plain-syntax"> < </span><span class="identifier-syntax">count2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>The only justification for the following complexity score is that it does
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>The only justification for the following complexity score is that it does
|
||||
seem to accord well with what people expect. (There's clearly no theoretically
|
||||
perfect way to define complexity of conditions in a language as complex as
|
||||
Inform; this bit of scruffy, rather than neat, logic will have to do.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Conditions::count</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">Conditions::count</span></span>:<br/><a href="2-cnd.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Conditions::count</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">Conditions::count</span></span>:<br/><a href="2-cnd.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-spc.html#SP1" class="function-link"><span class="function-syntax">Specifications::is_condition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_AND_NT:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-cnd.html#SP14" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> + </span><a href="2-cnd.html#SP14" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-cnd.html#SP13" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> + </span><a href="2-cnd.html#SP13" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_OR_NT:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_NOT_NT:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-cnd.html#SP14" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-cnd.html#SP13" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_TENSE_NT:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-cnd.html#SP14" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-cnd.html#SP13" class="function-link"><span class="function-syntax">Conditions::count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_PROPOSITION_NT:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Propositions::length</span><span class="plain-syntax">(</span><a href="2-spc.html#SP4" class="function-link"><span class="function-syntax">Specifications::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_PHRASE_OPTION_NT:</span>
|
||||
|
@ -354,7 +313,7 @@ Inform; this bit of scruffy, rather than neat, logic will have to do.)
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. Compiling. </b>We clear two oddball cases out of the way, and then for the most part we
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Compiling. </b>We clear two oddball cases out of the way, and then for the most part we
|
||||
delegate to potent routines elsewhere. Note that in some situations a valid
|
||||
I6 condition must be enclosed in round brackets, and that a redundant pair
|
||||
of brackets never does any harm; so we always compile one.
|
||||
|
@ -370,13 +329,18 @@ of brackets never does any harm; so we always compile one.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_TENSE_NT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Chronology::compile_past_tense_condition</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec_found</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_NOT_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cnd.html#SP15_1" class="named-paragraph-link"><span class="named-paragraph">Compile a logical negation</span><span class="named-paragraph-number">15.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_AND_NT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_OR_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cnd.html#SP15_2" class="named-paragraph-link"><span class="named-paragraph">Compile a logical operator</span><span class="named-paragraph-number">15.2</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_NOT_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cnd.html#SP14_1" class="named-paragraph-link"><span class="named-paragraph">Compile a logical negation</span><span class="named-paragraph-number">14.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_AND_NT:</span><span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGICAL_OR_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cnd.html#SP14_2" class="named-paragraph-link"><span class="named-paragraph">Compile a logical operator</span><span class="named-paragraph-number">14.2</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_VALUE_NT:</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-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::is_TEST_ACTION</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec_found</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">AConditions::is_action_TEST_VALUE</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec_found</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><a href="2-rvl.html#SP3" class="function-link"><span class="function-syntax">Rvalues::to_action_pattern</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::action_tested</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec_found</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ARvalues::to_action_pattern</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">AConditions::action_tested</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec_found</span><span 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="plain-syntax"> </span><span class="identifier-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">AConditions::action_tested</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec_found</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ea</span><span class="plain-syntax">) </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ea</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_described</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no action pattern to test"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTActionPatterns::compile_pattern_match</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-spc.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec_found</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -387,14 +351,14 @@ of brackets never does any harm; so we always compile one.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_PHRASE_OPTION_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cnd.html#SP15_3" class="named-paragraph-link"><span class="named-paragraph">Compile a phrase option test</span><span class="named-paragraph-number">15.3</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_PHRASE_OPTION_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cnd.html#SP14_3" class="named-paragraph-link"><span class="named-paragraph">Compile a phrase option test</span><span class="named-paragraph-number">14.3</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15_1" class="paragraph-anchor"></a><b>§15.1. </b>An easy case, running straight out to I6 operators:
|
||||
<p class="commentary firstcommentary"><a id="SP14_1" class="paragraph-anchor"></a><b>§14.1. </b>An easy case, running straight out to I6 operators:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile a logical negation</span><span class="named-paragraph-number">15.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile a logical negation</span><span class="named-paragraph-number">14.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -405,11 +369,11 @@ of brackets never does any harm; so we always compile one.
|
|||
<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">spec_found</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-cnd.html#SP15">§15</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP15_2" class="paragraph-anchor"></a><b>§15.2. </b>An easy case, running straight out to I6 operators:
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-cnd.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14_2" class="paragraph-anchor"></a><b>§14.2. </b>An easy case, running straight out to I6 operators:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile a logical operator</span><span class="named-paragraph-number">15.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile a logical operator</span><span class="named-paragraph-number">14.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -427,15 +391,15 @@ of brackets never does any harm; so we always compile one.
|
|||
<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">right_operand</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-cnd.html#SP15">§15</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP15_3" class="paragraph-anchor"></a><b>§15.3. </b>Phrase options are stored as bits in a 16-bit map, so that each individual
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-cnd.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14_3" class="paragraph-anchor"></a><b>§14.3. </b>Phrase options are stored as bits in a 16-bit map, so that each individual
|
||||
option is a power of two from \(2^0\) to \(2^15\). We test if this is valid by
|
||||
performing logical-and against the I6 local variable <span class="extract"><span class="extract-syntax">phrase_options</span></span>, which
|
||||
exists if and only if the enclosing I6 routine takes phrase options. The
|
||||
type-checker won't allow these specifications to be compiled anywhere else.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile a phrase option test</span><span class="named-paragraph-number">15.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile a phrase option test</span><span class="named-paragraph-number">14.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -449,7 +413,7 @@ type-checker won't allow these specifications to be compiled anywhere else.
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec_found</span><span class="plain-syntax">, </span><span class="identifier-syntax">phrase_option_ANNOT</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-cnd.html#SP15">§15</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-cnd.html#SP14">§14</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-lvl.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-vm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-spc.html">spc</a></li><li class="progresssection"><a href="2-rvl.html">rvl</a></li><li class="progresssection"><a href="2-lvl.html">lvl</a></li><li class="progresscurrent">cnd</li><li class="progresssection"><a href="2-dsc.html">dsc</a></li><li class="progresssection"><a href="2-dsh.html">dsh</a></li><li class="progresschapter"><a href="3-pl.html">3</a></li><li class="progresschapter"><a href="4-ets.html">4</a></li><li class="progressnext"><a href="2-dsc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -399,7 +399,7 @@ a list. It's sometimes convenient to loop through this list:
|
|||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Pretty-printing. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Descriptions::write_out_in_English</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Descriptions::write_out_in_English</span></span>:<br/>Conditions - <a href="2-cnd.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Descriptions::write_out_in_English</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Descriptions::write_out_in_English</span></span>:<br/>Conditions - <a href="2-cnd.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="2-spc.html#SP1" class="function-link"><span class="function-syntax">Specifications::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"a description"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -3671,17 +3671,15 @@ action value, which is a specific action.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_DASH</span><span class="plain-syntax">(</span><span class="string-syntax">"(5.d.1)"</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">MATCHING</span><span class="plain-syntax">, </span><span class="string-syntax">"Kind expected %u; ista %d cond %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_expected</span><span class="plain-syntax">, </span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::is_TEST_ACTION</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">), </span><span class="identifier-syntax">condition_context</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-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::is_TEST_ACTION</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">kind_expected</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">AConditions::is_action_TEST_VALUE</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">kind_expected</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_expected</span><span class="plain-syntax">))) {</span>
|
||||
<span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">MATCHING</span><span class="plain-syntax">, </span><span class="string-syntax">"Madeit\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ea</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">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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_code</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">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionPatterns::to_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, &</span><span class="identifier-syntax">failure_code</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ExplicitActions::from_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, &</span><span class="identifier-syntax">failure_code</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">failure_code</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">failure_code</span><span class="plain-syntax"> == </span><span class="identifier-syntax">UNDERSPECIFIC_EA_FAILURE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
|
@ -3694,7 +3692,7 @@ action value, which is a specific action.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEVER_MATCH</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">failure_code</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">failure_code</span><span class="plain-syntax"> == </span><span class="identifier-syntax">OVERSPECIFIC_EA_FAILURE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
|
@ -4206,7 +4204,7 @@ into treating it as such.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap_validation_suspended</span><span class="plain-syntax"> = </span><span class="identifier-syntax">state</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Dash::validate_parameter</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Dash::validate_parameter</span></span>:<br/>Type Expressions and Values - <a href="4-teav.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Dash::validate_parameter</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vts</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_found</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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -4258,7 +4256,7 @@ into treating it as such.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verbose_checking_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Dash::tracing_phrases</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Dash::tracing_phrases</span></span>:<br/><a href="2-dsh.html#SP27">§27</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Dash::tracing_phrases</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Dash::tracing_phrases</span></span>:<br/><a href="2-dsh.html#SP27">§27</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">text</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">text</span><span class="plain-syntax">[0])) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">LT</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">LT</span><span class="plain-syntax">, </span><span class="string-syntax">"%w"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
|
@ -4286,7 +4284,7 @@ at run time.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Dash::compatible_with_description</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Dash::compatible_with_description</span></span>:<br/><a href="2-dsh.html#SP10_5">§10.5</a>, <a href="2-dsh.html#SP24">§24</a><br/>Specifications - <a href="2-spc.html#SP8_5">§8.5</a><br/>Descriptions - <a href="2-dsc.html#SP12_2">§12.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Dash::compatible_with_description</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Dash::compatible_with_description</span></span>:<br/><a href="2-dsh.html#SP10_5">§10.5</a>, <a href="2-dsh.html#SP24">§24</a><br/>Specifications - <a href="2-spc.html#SP8_5">§8.5</a><br/>Descriptions - <a href="2-dsc.html#SP12_2">§12.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">KIND_CHECKING</span><span class="plain-syntax">, </span><span class="string-syntax">"[Can we match from: $P to: $P?]\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">from_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">to_spec</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><a href="2-spc.html#SP1" class="function-link"><span class="function-syntax">Specifications::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from_spec</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -102,36 +102,13 @@ pointers:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_action_name</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_action_pattern</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">Rvalues::from_action_pattern</span></span>:<br/>Conditions - <a href="2-cnd.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">failure_code</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">explicit_action</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionPatterns::to_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, &</span><span class="identifier-syntax">failure_code</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ea</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_constant_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_constant_explicit_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ea</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_description_of_action</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_grammar_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">grammar_verb</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">grammar_verb</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_named_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_action_pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_scene</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_scene</span><span class="plain-syntax">) }</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_activity</span><span class="plain-syntax">(</span><span class="identifier-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">activity</span><span class="plain-syntax">, </span><span class="identifier-syntax">Activities::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::base_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_relation</span><span class="plain-syntax">)) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_constant_phrase</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_phrase</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::base_construction</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_phrase</span><span class="plain-syntax">)) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_equation</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">Rvalues::from_equation</span></span>:<br/>Type Expressions and Values - <a href="4-teav.html#SP11_1">§11.1</a>, <a href="4-teav.html#SP11_3">§11.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">equation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_equation</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">Rvalues::from_equation</span></span>:<br/>Type Expressions and Values - <a href="4-teav.html#SP11_1">§11.1</a>, <a href="4-teav.html#SP11_3">§11.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">equation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">equation</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_equation</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_named_rulebook_outcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_rulebook_outcome</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_rulebook_outcome</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_rulebook_outcome</span><span class="plain-syntax">) }</span>
|
||||
|
@ -147,7 +124,7 @@ pointers:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">table_column</span><span class="plain-syntax">, </span><span class="identifier-syntax">Tables::Columns::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_use_option</span><span class="plain-syntax">(</span><span class="identifier-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">use_option</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_use_option</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_verb_form</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">Rvalues::from_verb_form</span></span>:<br/>Constants and Descriptions - <a href="4-cad.html#SP1_1">§1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_verb_form</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">Rvalues::from_verb_form</span></span>:<br/>Constants and Descriptions - <a href="4-cad.html#SP1_1">§1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">verb_form</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_verb</span><span class="plain-syntax">) }</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>Contrariwise, here's how to get back again:
|
||||
|
@ -159,43 +136,29 @@ pointers:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_action_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_name</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_action_pattern</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">Rvalues::to_action_pattern</span></span>:<br/>Conditions - <a href="2-cnd.html#SP10">§10</a>, <a href="2-cnd.html#SP15">§15</a><br/>Conditions and Phrases - <a href="4-cap.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">explicit_action</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_explicit_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">Rvalues::to_explicit_action</span></span>:<br/>Conditions - <a href="2-cnd.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">explicit_action</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">grammar_verb</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_grammar_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">grammar_verb</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_named_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_action_pattern</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_scene</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax">) }</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
<span class="identifier-syntax">activity</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_activity</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">Rvalues::to_activity</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">activity</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_activity</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">Rvalues::to_activity</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">activity</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_binary_predicate</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">Rvalues::to_binary_predicate</span></span>:<br/><a href="2-rvl.html#SP4">§4</a>, <a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_2">§24.2</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_binary_predicate</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">Rvalues::to_binary_predicate</span></span>:<br/><a href="2-rvl.html#SP4">§4</a>, <a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_2">§24.2</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">constant_phrase</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_constant_phrase</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">Rvalues::to_constant_phrase</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_6">§24.6</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">constant_phrase</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_constant_phrase</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">Rvalues::to_constant_phrase</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_6">§24.6</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">constant_phrase</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">equation</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_equation</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">Rvalues::to_equation</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a><br/>Type Expressions and Values - <a href="4-teav.html#SP11_2">§11.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">equation</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_equation</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">Rvalues::to_equation</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a><br/>Type Expressions and Values - <a href="4-teav.html#SP11_2">§11.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">equation</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">named_rulebook_outcome</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_named_rulebook_outcome</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">Rvalues::to_named_rulebook_outcome</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">named_rulebook_outcome</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_named_rulebook_outcome</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">Rvalues::to_named_rulebook_outcome</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_rulebook_outcome</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_property</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">Rvalues::to_property</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_3">§24.3</a>, <a href="2-rvl.html#SP25_3_1">§25.3.1</a><br/>Lvalues - <a href="2-lvl.html#SP10">§10</a>, <a href="2-lvl.html#SP11_5">§11.5</a>, <a href="2-lvl.html#SP13_3">§13.3</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_1_2_1">§10.9.1.1.2.1</a>, <a href="2-dsh.html#SP10_9_1_1_5_1_2">§10.9.1.1.5.1.2</a>, <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a>, <a href="2-dsh.html#SP12">§12</a>, <a href="2-dsh.html#SP18_3">§18.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_property</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">Rvalues::to_property</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_3">§24.3</a>, <a href="2-rvl.html#SP25_3_1">§25.3.1</a><br/>Lvalues - <a href="2-lvl.html#SP10">§10</a>, <a href="2-lvl.html#SP11_5">§11.5</a>, <a href="2-lvl.html#SP13_3">§13.3</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_1_2_1">§10.9.1.1.2.1</a>, <a href="2-dsh.html#SP10_9_1_1_5_1_2">§10.9.1.1.5.1.2</a>, <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a>, <a href="2-dsh.html#SP12">§12</a>, <a href="2-dsh.html#SP18_3">§18.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">rule</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_rule</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">Rvalues::to_rule</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">rule</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_rule</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">Rvalues::to_rule</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">rule</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_rulebook</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">Rvalues::to_rulebook</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_rulebook</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">Rvalues::to_rulebook</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">table</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_table</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">Rvalues::to_table</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">table</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_table</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">Rvalues::to_table</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">table</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">table_column</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_table_column</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">Rvalues::to_table_column</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_5">§24.5</a>, <a href="2-rvl.html#SP25_3">§25.3</a><br/>Lvalues - <a href="2-lvl.html#SP11_3">§11.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">table_column</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_table_column</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">Rvalues::to_table_column</span></span>:<br/><a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_5">§24.5</a>, <a href="2-rvl.html#SP25_3">§25.3</a><br/>Lvalues - <a href="2-lvl.html#SP11_3">§11.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">table_column</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">use_option</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_use_option</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">Rvalues::to_use_option</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">use_option</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_use_option</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">Rvalues::to_use_option</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">use_option</span><span class="plain-syntax">) }</span>
|
||||
<span class="identifier-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_verb_form</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_verb_form</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_verb_form</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">Rvalues::to_verb_form</span></span>:<br/><a href="2-rvl.html#SP25_3">§25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">verb_form</span><span class="plain-syntax">) }</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
@ -207,7 +170,7 @@ objects.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_instance</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">Rvalues::from_instance</span></span>:<br/>Lvalues - <a href="2-lvl.html#SP13_3_1">§13.3.1</a><br/>Descriptions - <a href="2-dsc.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_instance</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">Rvalues::from_instance</span></span>:<br/>Lvalues - <a href="2-lvl.html#SP13_3_1">§13.3.1</a><br/>Descriptions - <a href="2-dsc.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_constant_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
|
@ -216,21 +179,21 @@ objects.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_instance</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_instance</span></span>:<br/><a href="2-rvl.html#SP6">§6</a>, <a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_1">§24.1</a>, <a href="2-rvl.html#SP25_3">§25.3</a><br/>Specifications - <a href="2-spc.html#SP5">§5</a><br/>Descriptions - <a href="2-dsc.html#SP5">§5</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_1_5_1_1">§10.9.1.1.5.1.1</a><br/>Verbal and Relative Clauses - <a href="4-varc.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_instance</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">Rvalues::to_instance</span></span>:<br/><a href="2-rvl.html#SP6">§6</a>, <a href="2-rvl.html#SP22">§22</a>, <a href="2-rvl.html#SP24_1">§24.1</a>, <a href="2-rvl.html#SP25_3">§25.3</a><br/>Specifications - <a href="2-spc.html#SP5">§5</a><br/>Descriptions - <a href="2-dsc.html#SP5">§5</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_1_5_1_1">§10.9.1.1.5.1.1</a><br/>Verbal and Relative Clauses - <a href="4-varc.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax">) }</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>An instance of a subkind of <span class="extract"><span class="extract-syntax">K_object</span></span> is called an "object":
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_object</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_object</span></span>:<br/><a href="2-rvl.html#SP24">§24</a><br/>Specifications - <a href="2-spc.html#SP3">§3</a>, <a href="2-spc.html#SP5">§5</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_object</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_object</span></span>:<br/><a href="2-rvl.html#SP24">§24</a><br/>Specifications - <a href="2-spc.html#SP3">§3</a>, <a href="2-spc.html#SP5">§5</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">))))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_object_instance</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_object_instance</span></span>:<br/><a href="2-rvl.html#SP22">§22</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_1_5_1">§10.9.1.1.5.1</a><br/>Constants and Descriptions - <a href="4-cad.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_object_instance</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">Rvalues::to_object_instance</span></span>:<br/><a href="2-rvl.html#SP22">§22</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_1_5_1">§10.9.1.1.5.1</a><br/>Constants and Descriptions - <a href="4-cad.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rvl.html#SP6" class="function-link"><span class="function-syntax">Rvalues::is_object</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-rvl.html#SP5" class="function-link"><span class="function-syntax">Rvalues::to_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -241,14 +204,14 @@ special annotations.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::new_self_object_constant</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Rvalues::new_self_object_constant</span></span>:<br/>Dash - <a href="2-dsh.html#SP18_3_1_1">§18.3.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::new_self_object_constant</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Rvalues::new_self_object_constant</span></span>:<br/>Dash - <a href="2-dsh.html#SP18_3_1_1">§18.3.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">self_object_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::new_nothing_object_constant</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Rvalues::new_nothing_object_constant</span></span>:<br/>Constants and Descriptions - <a href="4-cad.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::new_nothing_object_constant</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Rvalues::new_nothing_object_constant</span></span>:<br/>Constants and Descriptions - <a href="4-cad.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">nothing_object_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
@ -260,12 +223,12 @@ title from "The Big Bang Theory"),
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_nothing_object_constant</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_nothing_object_constant</span></span>:<br/>Specifications - <a href="2-spc.html#SP3">§3</a>, <a href="2-spc.html#SP5">§5</a>, <a href="2-spc.html#SP9">§9</a><br/>Dash - <a href="2-dsh.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_nothing_object_constant</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_nothing_object_constant</span></span>:<br/>Specifications - <a href="2-spc.html#SP3">§3</a>, <a href="2-spc.html#SP5">§5</a>, <a href="2-spc.html#SP9">§9</a><br/>Dash - <a href="2-dsh.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">nothing_object_ANNOT</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">Rvalues::is_self_object_constant</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_self_object_constant</span></span>:<br/>Lvalues - <a href="2-lvl.html#SP6">§6</a>, <a href="2-lvl.html#SP13_3_1">§13.3.1</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_self_object_constant</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_self_object_constant</span></span>:<br/>Lvalues - <a href="2-lvl.html#SP6">§6</a>, <a href="2-lvl.html#SP13_3_1">§13.3.1</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">self_object_ANNOT</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>
|
||||
|
@ -275,7 +238,7 @@ perhaps 24000, and the following turns that into an rvalue:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_encoded_notation</span></span>:<br/>Literal Patterns - <a href="3-lp.html#SP31">§31</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">encoded_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_encoded_notation</span></span>:<br/>Literal Patterns - <a href="3-lp.html#SP31">§31</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">encoded_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
@ -283,7 +246,7 @@ perhaps 24000, and the following turns that into an rvalue:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::to_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_encoded_notation</span></span>:<br/><a href="2-rvl.html#SP22">§22</a><br/>Literal Patterns - <a href="3-lp.html#SP24_3">§24.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::to_encoded_notation</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_encoded_notation</span></span>:<br/><a href="2-rvl.html#SP22">§22</a><br/>Literal Patterns - <a href="3-lp.html#SP24_3">§24.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">constant_number_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
@ -294,7 +257,7 @@ annotation, not a pointer one.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_int</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_int</span></span>:<br/>Parsing Literals - <a href="3-pl.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_int</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_int</span></span>:<br/>Parsing Literals - <a href="3-pl.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
@ -302,7 +265,7 @@ annotation, not a pointer one.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::to_int</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_int</span></span>:<br/><a href="2-rvl.html#SP25_1">§25.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::to_int</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_int</span></span>:<br/><a href="2-rvl.html#SP25_1">§25.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">constant_number_ANNOT</span><span class="plain-syntax">);</span>
|
||||
|
@ -315,7 +278,7 @@ of <span class="extract"><span class="extract-syntax">float</span></span> to be
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_IEEE_754</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_IEEE_754</span></span>:<br/>Literal Real Numbers - <a href="3-lrn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_IEEE_754</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_IEEE_754</span></span>:<br/>Literal Real Numbers - <a href="3-lrn.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_real_number</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
@ -333,7 +296,7 @@ of <span class="extract"><span class="extract-syntax">float</span></span> to be
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_boolean</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_boolean</span></span>:<br/>Parsing Literals - <a href="3-pl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_boolean</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_boolean</span></span>:<br/>Parsing Literals - <a href="3-pl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">flag</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_truth_state</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
@ -351,7 +314,7 @@ of <span class="extract"><span class="extract-syntax">float</span></span> to be
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_Unicode</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_Unicode</span></span>:<br/>Unicode Literals - <a href="3-ul.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code_point</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_Unicode</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_Unicode</span></span>:<br/>Unicode Literals - <a href="3-ul.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code_point</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_unicode_character</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
@ -370,7 +333,7 @@ reduced modulo 1440, the number of minutes in a day.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_time</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_time</span></span>:<br/>Times of Day - <a href="3-tod.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">minutes_since_midnight</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_time</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_time</span></span>:<br/>Times of Day - <a href="3-tod.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">minutes_since_midnight</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><a href="3-tod.html#SP3" class="function-link"><span class="function-syntax">TimesOfDay::kind</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">explicit_literal_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
@ -389,7 +352,7 @@ together with their kinds:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_wording_of_list</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_wording_of_list</span></span>:<br/>Literal Lists - <a href="3-ll.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_wording_of_list</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_wording_of_list</span></span>:<br/>Literal Lists - <a href="3-ll.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
|
@ -399,7 +362,7 @@ together with their kinds:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_wording</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_wording</span></span>:<br/><a href="2-rvl.html#SP17">§17</a><br/>Parsing Literals - <a href="3-pl.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_wording</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_wording</span></span>:<br/><a href="2-rvl.html#SP17">§17</a><br/>Parsing Literals - <a href="3-pl.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
|
@ -433,7 +396,7 @@ an l-value.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_pair</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_pair</span></span>:<br/>Verbal and Relative Clauses - <a href="4-varc.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Y</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_pair</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">Rvalues::from_pair</span></span>:<br/>Verbal and Relative Clauses - <a href="4-varc.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Y</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">X</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><a href="2-spc.html#SP10" class="function-link"><span class="function-syntax">Specifications::new_UNKNOWN</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Y</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">Y</span><span class="plain-syntax"> = </span><a href="2-spc.html#SP10" class="function-link"><span class="function-syntax">Specifications::new_UNKNOWN</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kX</span><span class="plain-syntax"> = </span><a href="2-spc.html#SP1" class="function-link"><span class="function-syntax">Specifications::to_true_kind_disambiguated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">X</span><span class="plain-syntax">);</span>
|
||||
|
@ -456,7 +419,7 @@ in the proposition.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::constant_description</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">Rvalues::constant_description</span></span>:<br/>Descriptions - <a href="2-dsc.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::constant_description</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">Rvalues::constant_description</span></span>:<br/>Descriptions - <a href="2-dsc.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new_with_words</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_NT</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">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::unary_con</span><span class="plain-syntax">(</span><span class="identifier-syntax">CON_description</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
|
@ -464,7 +427,7 @@ in the proposition.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</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">Rvalues::set_constant_description_proposition</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">Rvalues::set_constant_description_proposition</span></span>:<br/>Descriptions - <a href="2-dsc.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::set_constant_description_proposition</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Rvalues::set_constant_description_proposition</span></span>:<br/>Descriptions - <a href="2-dsc.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</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-rvl.html#SP21" class="function-link"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">CON_description</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_proposition</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">,</span>
|
||||
|
@ -476,14 +439,14 @@ in the proposition.
|
|||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. Testing. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_construction</span><button class="popup" onclick="togglePopup('usagePopup40')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup40">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></span>:<br/><a href="2-rvl.html#SP20">§20</a>, <a href="2-rvl.html#SP23">§23</a>, <a href="2-rvl.html#SP24">§24</a><br/>Specifications - <a href="2-spc.html#SP3">§3</a><br/>Lvalues - <a href="2-lvl.html#SP10">§10</a><br/>Descriptions - <a href="2-dsc.html#SP1">§1</a>, <a href="2-dsc.html#SP2">§2</a><br/>Dash - <a href="2-dsh.html#SP9_1_1_3_1_3">§9.1.1.3.1.3</a>, <a href="2-dsh.html#SP10_9_1_1_2_1">§10.9.1.1.2.1</a>, <a href="2-dsh.html#SP10_9_1_1_3_1_1">§10.9.1.1.3.1.1</a>, <a href="2-dsh.html#SP10_9_1_1_5_1">§10.9.1.1.5.1</a>, <a href="2-dsh.html#SP10_9_1_1_5_1_2">§10.9.1.1.5.1.2</a>, <a href="2-dsh.html#SP12">§12</a>, <a href="2-dsh.html#SP18_3">§18.3</a><br/>Constants and Descriptions - <a href="4-cad.html#SP3">§3</a>, <a href="4-cad.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_construction</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></span>:<br/><a href="2-rvl.html#SP20">§20</a>, <a href="2-rvl.html#SP23">§23</a>, <a href="2-rvl.html#SP24">§24</a><br/>Specifications - <a href="2-spc.html#SP3">§3</a><br/>Lvalues - <a href="2-lvl.html#SP10">§10</a><br/>Descriptions - <a href="2-dsc.html#SP1">§1</a>, <a href="2-dsc.html#SP2">§2</a><br/>Dash - <a href="2-dsh.html#SP9_1_1_3_1_3">§9.1.1.3.1.3</a>, <a href="2-dsh.html#SP10_9_1_1_2_1">§10.9.1.1.2.1</a>, <a href="2-dsh.html#SP10_9_1_1_3_1_1">§10.9.1.1.3.1.1</a>, <a href="2-dsh.html#SP10_9_1_1_5_1">§10.9.1.1.5.1</a>, <a href="2-dsh.html#SP10_9_1_1_5_1_2">§10.9.1.1.5.1.2</a>, <a href="2-dsh.html#SP12">§12</a>, <a href="2-dsh.html#SP18_3">§18.3</a><br/>Constants and Descriptions - <a href="4-cad.html#SP3">§3</a>, <a href="4-cad.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">con</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span><button class="popup" onclick="togglePopup('usagePopup41')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup41">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></span>:<br/><a href="2-rvl.html#SP11">§11</a>, <a href="2-rvl.html#SP12">§12</a>, <a href="2-rvl.html#SP13">§13</a>, <a href="2-rvl.html#SP14">§14</a><br/>Dash - <a href="2-dsh.html#SP16">§16</a>, <a href="2-dsh.html#SP18_5_2">§18.5.2</a><br/>Literal Patterns - <a href="3-lp.html#SP24_3">§24.3</a><br/>Enter the S-Parser - <a href="4-ets.html#SP11">§11</a><br/>Constants and Descriptions - <a href="4-cad.html#SP3">§3</a>, <a href="4-cad.html#SP5">§5</a><br/>Type Expressions and Values - <a href="4-teav.html#SP11_2">§11.2</a><br/>Conditions and Phrases - <a href="4-cap.html#SP12_1">§12.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></span>:<br/><a href="2-rvl.html#SP11">§11</a>, <a href="2-rvl.html#SP12">§12</a>, <a href="2-rvl.html#SP13">§13</a>, <a href="2-rvl.html#SP14">§14</a><br/>Dash - <a href="2-dsh.html#SP16">§16</a>, <a href="2-dsh.html#SP18_5_2">§18.5.2</a><br/>Literal Patterns - <a href="3-lp.html#SP24_3">§24.3</a><br/>Enter the S-Parser - <a href="4-ets.html#SP11">§11</a><br/>Constants and Descriptions - <a href="4-cad.html#SP3">§3</a>, <a href="4-cad.html#SP5">§5</a><br/>Type Expressions and Values - <a href="4-teav.html#SP11_2">§11.2</a><br/>Conditions and Phrases - <a href="4-cap.html#SP12_1">§12.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">), </span><span class="identifier-syntax">K</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>
|
||||
|
@ -521,7 +484,7 @@ doesn't need to be especially rapid.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">KCOMPARE_CONSTANTS_USING</span><span class="plain-syntax">(</span><span class="identifier-syntax">DATA</span><span class="plain-syntax">, </span><span class="identifier-syntax">STRUCTURE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::to_</span><span class="plain-syntax">##</span><span class="identifier-syntax">STRUCTURE</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::compare_CONSTANT</span><button class="popup" onclick="togglePopup('usagePopup42')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup42">Usage of <span class="code-font"><span class="function-syntax">Rvalues::compare_CONSTANT</span></span>:<br/>Dash - <a href="2-dsh.html#SP10_6">§10.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::compare_CONSTANT</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">Rvalues::compare_CONSTANT</span></span>:<br/>Dash - <a href="2-dsh.html#SP10_6">§10.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
|
@ -557,11 +520,9 @@ doesn't need to be especially rapid.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">KCOMPARE_CONSTANTS</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook_outcome</span><span class="plain-syntax">, </span><span class="identifier-syntax">named_rulebook_outcome</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KCOMPARE_CONSTANTS</span><span class="plain-syntax">(</span><span class="identifier-syntax">table</span><span class="plain-syntax">, </span><span class="identifier-syntax">table</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KCOMPARE_CONSTANTS</span><span class="plain-syntax">(</span><span class="identifier-syntax">use_option</span><span class="plain-syntax">, </span><span class="identifier-syntax">use_option</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KCOMPARE_CONSTANTS</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">action_name</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KCOMPARE_CONSTANTS</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax">, </span><span class="identifier-syntax">scene</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KCOMPARE_CONSTANTS</span><span class="plain-syntax">(</span><span class="identifier-syntax">understanding</span><span class="plain-syntax">, </span><span class="identifier-syntax">grammar_verb</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::compare_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec2</span><span class="plain-syntax">, &</span><span class="identifier-syntax">rv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="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>
|
||||
|
@ -570,7 +531,7 @@ doesn't need to be especially rapid.
|
|||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. Pretty-printing. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::write_out_in_English</span><button class="popup" onclick="togglePopup('usagePopup43')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup43">Usage of <span class="code-font"><span class="function-syntax">Rvalues::write_out_in_English</span></span>:<br/>Specifications - <a href="2-spc.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::write_out_in_English</span><button class="popup" onclick="togglePopup('usagePopup40')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup40">Usage of <span class="code-font"><span class="function-syntax">Rvalues::write_out_in_English</span></span>:<br/>Specifications - <a href="2-spc.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PHRASE_TO_DECIDE_VALUE_NT:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dtr</span><span class="plain-syntax"> = </span><a href="2-spc.html#SP1" class="function-link"><span class="function-syntax">Specifications::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
|
@ -604,7 +565,7 @@ result have?
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_kind</span><button class="popup" onclick="togglePopup('usagePopup44')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup44">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_kind</span></span>:<br/>Specifications - <a href="2-spc.html#SP1">§1</a><br/>Lvalues - <a href="2-lvl.html#SP11">§11</a><br/>Literal Patterns - <a href="3-lp.html#SP24_4">§24.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_kind</span><button class="popup" onclick="togglePopup('usagePopup41')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup41">Usage of <span class="code-font"><span class="function-syntax">Rvalues::to_kind</span></span>:<br/>Specifications - <a href="2-spc.html#SP1">§1</a><br/>Lvalues - <a href="2-lvl.html#SP11">§11</a><br/>Literal Patterns - <a href="3-lp.html#SP24_4">§24.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Rvalues::to_kind on NULL"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONSTANT_NT:</span>
|
||||
|
|
|
@ -104,7 +104,7 @@ for creating and using them.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-dsc.html#SP3" class="function-link"><span class="function-syntax">Descriptions::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Specifications::to_kind</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">Specifications::to_kind</span></span>:<br/><a href="2-spc.html#SP6">§6</a><br/>Rvalues - <a href="2-rvl.html#SP23">§23</a><br/>Lvalues - <a href="2-lvl.html#SP11_4">§11.4</a>, <a href="2-lvl.html#SP13_3">§13.3</a><br/>Conditions - <a href="2-cnd.html#SP12">§12</a><br/>Descriptions - <a href="2-dsc.html#SP11">§11</a><br/>Dash - <a href="2-dsh.html#SP9_1_1_3_1">§9.1.1.3.1</a>, <a href="2-dsh.html#SP10_6">§10.6</a>, <a href="2-dsh.html#SP10_9_1_1_3_1_1">§10.9.1.1.3.1.1</a>, <a href="2-dsh.html#SP10_9_1_1_4">§10.9.1.1.4</a>, <a href="2-dsh.html#SP10_9_1_1_5">§10.9.1.1.5</a>, <a href="2-dsh.html#SP10_9_1_1_5_2">§10.9.1.1.5.2</a>, <a href="2-dsh.html#SP10_9_1_2_2">§10.9.1.2.2</a>, <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a>, <a href="2-dsh.html#SP10_9_1_2_3_3">§10.9.1.2.3.3</a>, <a href="2-dsh.html#SP10_9_1_2_4">§10.9.1.2.4</a>, <a href="2-dsh.html#SP12">§12</a>, <a href="2-dsh.html#SP13_1_1">§13.1.1</a>, <a href="2-dsh.html#SP18_5_1">§18.5.1</a>, <a href="2-dsh.html#SP18_5_3">§18.5.3</a>, <a href="2-dsh.html#SP18_5_4">§18.5.4</a>, <a href="2-dsh.html#SP18_6_1">§18.6.1</a>, <a href="2-dsh.html#SP18_6_1_1">§18.6.1.1</a>, <a href="2-dsh.html#SP18_6_2_1">§18.6.2.1</a>, <a href="2-dsh.html#SP24">§24</a>, <a href="2-dsh.html#SP26">§26</a><br/>Literal Lists - <a href="3-ll.html#SP8_1">§8.1</a><br/>Constants and Descriptions - <a href="4-cad.html#SP18_4">§18.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Specifications::to_kind</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">Specifications::to_kind</span></span>:<br/><a href="2-spc.html#SP6">§6</a><br/>Rvalues - <a href="2-rvl.html#SP23">§23</a><br/>Lvalues - <a href="2-lvl.html#SP11_4">§11.4</a>, <a href="2-lvl.html#SP13_3">§13.3</a><br/>Conditions - <a href="2-cnd.html#SP11">§11</a><br/>Descriptions - <a href="2-dsc.html#SP11">§11</a><br/>Dash - <a href="2-dsh.html#SP9_1_1_3_1">§9.1.1.3.1</a>, <a href="2-dsh.html#SP10_6">§10.6</a>, <a href="2-dsh.html#SP10_9_1_1_3_1_1">§10.9.1.1.3.1.1</a>, <a href="2-dsh.html#SP10_9_1_1_4">§10.9.1.1.4</a>, <a href="2-dsh.html#SP10_9_1_1_5">§10.9.1.1.5</a>, <a href="2-dsh.html#SP10_9_1_1_5_2">§10.9.1.1.5.2</a>, <a href="2-dsh.html#SP10_9_1_2_2">§10.9.1.2.2</a>, <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a>, <a href="2-dsh.html#SP10_9_1_2_3_3">§10.9.1.2.3.3</a>, <a href="2-dsh.html#SP10_9_1_2_4">§10.9.1.2.4</a>, <a href="2-dsh.html#SP12">§12</a>, <a href="2-dsh.html#SP13_1_1">§13.1.1</a>, <a href="2-dsh.html#SP18_5_1">§18.5.1</a>, <a href="2-dsh.html#SP18_5_3">§18.5.3</a>, <a href="2-dsh.html#SP18_5_4">§18.5.4</a>, <a href="2-dsh.html#SP18_6_1">§18.6.1</a>, <a href="2-dsh.html#SP18_6_1_1">§18.6.1.1</a>, <a href="2-dsh.html#SP18_6_2_1">§18.6.2.1</a>, <a href="2-dsh.html#SP24">§24</a>, <a href="2-dsh.html#SP26">§26</a><br/>Literal Lists - <a href="3-ll.html#SP8_1">§8.1</a><br/>Constants and Descriptions - <a href="4-cad.html#SP18_4">§18.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">AMBIGUITY_NT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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-spc.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-dsc.html#SP3" class="function-link"><span class="function-syntax">Descriptions::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
|
@ -141,7 +141,7 @@ for creating and using them.
|
|||
<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">Specifications::is_condition</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">Specifications::is_condition</span></span>:<br/><a href="2-spc.html#SP7">§7</a><br/>Conditions - <a href="2-cnd.html#SP14">§14</a><br/>Dash - <a href="2-dsh.html#SP18_6_2">§18.6.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Specifications::is_condition</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">Specifications::is_condition</span></span>:<br/><a href="2-spc.html#SP7">§7</a><br/>Conditions - <a href="2-cnd.html#SP13">§13</a><br/>Dash - <a href="2-dsh.html#SP18_6_2">§18.6.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">node_type_metadata</span><span class="plain-syntax"> *</span><span class="identifier-syntax">metadata</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NodeType::get_metadata</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">metadata</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">metadata</span><span class="plain-syntax">-></span><span class="identifier-syntax">category</span><span class="plain-syntax"> == </span><span class="identifier-syntax">COND_NCAT</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>
|
||||
|
@ -179,7 +179,7 @@ but "12" is not.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</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">Specifications::is_description</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">Specifications::is_description</span></span>:<br/><a href="2-spc.html#SP1">§1</a>, <a href="2-spc.html#SP4">§4</a>, <a href="2-spc.html#SP5">§5</a>, <a href="2-spc.html#SP8">§8</a><br/>Conditions - <a href="2-cnd.html#SP12">§12</a>, <a href="2-cnd.html#SP15">§15</a><br/>Descriptions - <a href="2-dsc.html#SP1">§1</a>, <a href="2-dsc.html#SP2">§2</a>, <a href="2-dsc.html#SP4">§4</a>, <a href="2-dsc.html#SP5">§5</a>, <a href="2-dsc.html#SP6">§6</a>, <a href="2-dsc.html#SP7">§7</a>, <a href="2-dsc.html#SP9">§9</a>, <a href="2-dsc.html#SP10">§10</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_1_3_1_1">§10.9.1.1.3.1.1</a>, <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a>, <a href="2-dsh.html#SP18_5_3">§18.5.3</a>, <a href="2-dsh.html#SP18_6_2">§18.6.2</a>, <a href="2-dsh.html#SP24">§24</a><br/>Constants and Descriptions - <a href="4-cad.html#SP18_5">§18.5</a><br/>Verbal and Relative Clauses - <a href="4-varc.html#SP11_4_1">§11.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Specifications::is_description</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">Specifications::is_description</span></span>:<br/><a href="2-spc.html#SP1">§1</a>, <a href="2-spc.html#SP4">§4</a>, <a href="2-spc.html#SP5">§5</a>, <a href="2-spc.html#SP8">§8</a><br/>Conditions - <a href="2-cnd.html#SP11">§11</a>, <a href="2-cnd.html#SP14">§14</a><br/>Descriptions - <a href="2-dsc.html#SP1">§1</a>, <a href="2-dsc.html#SP2">§2</a>, <a href="2-dsc.html#SP4">§4</a>, <a href="2-dsc.html#SP5">§5</a>, <a href="2-dsc.html#SP6">§6</a>, <a href="2-dsc.html#SP7">§7</a>, <a href="2-dsc.html#SP9">§9</a>, <a href="2-dsc.html#SP10">§10</a><br/>Dash - <a href="2-dsh.html#SP10_9_1_1_3_1_1">§10.9.1.1.3.1.1</a>, <a href="2-dsh.html#SP10_9_1_2_3">§10.9.1.2.3</a>, <a href="2-dsh.html#SP18_5_3">§18.5.3</a>, <a href="2-dsh.html#SP18_6_2">§18.6.2</a>, <a href="2-dsh.html#SP24">§24</a><br/>Constants and Descriptions - <a href="4-cad.html#SP18_5">§18.5</a><br/>Verbal and Relative Clauses - <a href="4-varc.html#SP11_4_1">§11.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_VALUE_NT</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-rvl.html#SP21" class="function-link"><span class="function-syntax">Rvalues::is_CONSTANT_construction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">CON_description</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>
|
||||
|
@ -190,7 +190,7 @@ but "12" is not.
|
|||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">NP_TO_PROPOSITION</span><span class="plain-syntax"> </span><a href="2-spc.html#SP4" class="function-link"><span class="function-syntax">Specifications::to_proposition</span></a>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Specifications::to_proposition</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">Specifications::to_proposition</span></span>:<br/>Conditions - <a href="2-cnd.html#SP14">§14</a>, <a href="2-cnd.html#SP15">§15</a><br/>Descriptions - <a href="2-dsc.html#SP1">§1</a><br/>Dash - <a href="2-dsh.html#SP18_4">§18.4</a><br/>Verbal and Relative Clauses - <a href="4-varc.html#SP11_3">§11.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="function-syntax">Specifications::to_proposition</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">Specifications::to_proposition</span></span>:<br/>Conditions - <a href="2-cnd.html#SP13">§13</a>, <a href="2-cnd.html#SP14">§14</a><br/>Descriptions - <a href="2-dsc.html#SP1">§1</a><br/>Dash - <a href="2-dsh.html#SP18_4">§18.4</a><br/>Verbal and Relative Clauses - <a href="4-varc.html#SP11_3">§11.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-spc.html#SP3" class="function-link"><span class="function-syntax">Specifications::is_description</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-dsc.html#SP1" class="function-link"><span class="function-syntax">Descriptions::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
|
@ -265,7 +265,7 @@ Index; those have to be English language forms.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"something unknown"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-lvl.html#SP7" class="function-link"><span class="function-syntax">Lvalues::is_lvalue</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) </span><a href="2-lvl.html#SP10" class="function-link"><span class="function-syntax">Lvalues::write_out_in_English</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rvl.html#SP1" class="function-link"><span class="function-syntax">Rvalues::is_rvalue</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) </span><a href="2-rvl.html#SP23" class="function-link"><span class="function-syntax">Rvalues::write_out_in_English</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-spc.html#SP1" class="function-link"><span class="function-syntax">Specifications::is_condition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) </span><a href="2-cnd.html#SP12" class="function-link"><span class="function-syntax">Conditions::write_out_in_English</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-spc.html#SP1" class="function-link"><span class="function-syntax">Specifications::is_condition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) </span><a href="2-cnd.html#SP11" class="function-link"><span class="function-syntax">Conditions::write_out_in_English</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">AMBIGUITY_NT</span><span class="plain-syntax">)) </span><a href="2-spc.html#SP7" class="function-link"><span class="function-syntax">Specifications::write_out_in_English</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"something unrecognised"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -229,7 +229,7 @@ which happens to be a malformed list.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lle</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ll</span><span class="plain-syntax">-></span><span class="element-syntax">first_llist_entry</span><span class="plain-syntax">; </span><span class="identifier-syntax">lle</span><span class="plain-syntax">; </span><span class="identifier-syntax">lle</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lle</span><span class="plain-syntax">-></span><span class="element-syntax">next_llist_entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lle</span><span class="plain-syntax">-></span><span class="element-syntax">llist_entry_value</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (!</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::is_TEST_ACTION</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">AConditions::is_action_TEST_VALUE</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dsh.html#SP8" class="function-link"><span class="function-syntax">Dash::check_value_silently</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_stored_action</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dsh.html#SP8" class="function-link"><span class="function-syntax">Dash::check_value_silently</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -135,10 +135,10 @@ following implements this as a hand-coded nonterminal instead.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">parse_node</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">atomic_cnd</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><<rp>></span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">parse_node</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">spec</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">atomic_cnd</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">Node::is</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">spec</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">CONSTANT_NT</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="2-rvl.html#SP3" class="function-link"><span class="Preform-function-syntax">Rvalues::to_action_pattern</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">spec</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">spec</span><span class="Preform-plain-syntax"> = </span><a href="2-cnd.html#SP10" class="function-link"><span class="Preform-function-syntax">Conditions::new_TEST_ACTION</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">ARvalues::to_action_pattern</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">spec</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">spec</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">AConditions::new_action_TEST_VALUE</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="2-cnd.html#SP11" class="function-link"><span class="Preform-function-syntax">Conditions::attach_historic_requirement</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">spec</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">tp</span><span class="Preform-plain-syntax">) };</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="2-cnd.html#SP10" class="function-link"><span class="Preform-function-syntax">Conditions::attach_historic_requirement</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">spec</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">tp</span><span class="Preform-plain-syntax">) };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
|
@ -272,10 +272,10 @@ conditions, so this is where the condition in
|
|||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><s-action-pattern-as-condition></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><we-are-action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Conditions::new_TEST_ACTION(RP[1], W) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><we-are-action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, AConditions::new_action_TEST_VALUE(RP[1], W) }</span>
|
||||
|
||||
<span class="Preform-function-syntax"><s-action-pattern-as-negated-condition></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-negated></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, Conditions::new_TEST_ACTION(RP[1], W) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-negated></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, AConditions::new_action_TEST_VALUE(RP[1], W) }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>And similarly:
|
||||
|
@ -303,8 +303,8 @@ conditions, so this is where the condition in
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"too much information about past events."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::new_TEST_ACTION</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP11" class="function-link"><span class="function-syntax">Conditions::attach_tense</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">HASBEEN_TENSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AConditions::new_action_TEST_VALUE</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::attach_tense</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">HASBEEN_TENSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> ==> { -, </span><span class="identifier-syntax">C</span><span class="plain-syntax"> };</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
|
|
|
@ -257,7 +257,7 @@ back into the original tree but throw away the S-node head.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><a href="2-rvl.html#SP21" class="function-link"><span class="Preform-function-syntax">Rvalues::is_CONSTANT_of_kind</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">K_stored_action</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax"> };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><a href="2-cnd.html#SP10" class="function-link"><span class="Preform-function-syntax">Conditions::is_TEST_ACTION</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">AConditions::is_action_TEST_VALUE</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax">-></span><span class="Preform-identifier-syntax">down</span><span class="Preform-plain-syntax"> };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> {</span>
|
||||
|
@ -282,7 +282,7 @@ back into the original tree but throw away the S-node head.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><a href="2-rvl.html#SP21" class="function-link"><span class="Preform-function-syntax">Rvalues::is_CONSTANT_of_kind</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">K_stored_action</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax"> };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><a href="2-cnd.html#SP10" class="function-link"><span class="Preform-function-syntax">Conditions::is_TEST_ACTION</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">AConditions::is_action_TEST_VALUE</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">S</span><span class="Preform-plain-syntax">-></span><span class="Preform-identifier-syntax">down</span><span class="Preform-plain-syntax"> };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> {</span>
|
||||
|
|
|
@ -672,36 +672,6 @@ Again, this is part of a condition, and can't evaluate.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Node::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>Action patterns, such as "taking a container" or "opening a closed door",
|
||||
are parsed by code in the chapter on Actions; all we do here is to wrap the
|
||||
result.
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><s-action-pattern-as-value></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-identifier-syntax">ifdef</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">IF_MODULE</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">Wordings::mismatched_brackets</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">)) { ==> { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">Lexer::word</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">Wordings::first_wn</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">)) == </span><span class="Preform-identifier-syntax">OPENBRACE_V</span><span class="Preform-plain-syntax">) { ==> { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">pto</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">permit_trying_omission</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-function-syntax"><definite-article></span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">Wordings::first_word</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">)) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">) </span><span class="Preform-identifier-syntax">permit_trying_omission</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><action-pattern></span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">permit_trying_omission</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">pto</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax">) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><<rp>></span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">APClauses::get_val</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">ACTOR_AP_CLAUSE</span><span class="Preform-plain-syntax">)) &&</span>
|
||||
<span class="Preform-plain-syntax"> (</span><a href="2-dsh.html#SP24" class="function-link"><span class="Preform-function-syntax">Dash::validate_parameter</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">APClauses::get_val</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">ACTOR_AP_CLAUSE</span><span class="Preform-plain-syntax">), </span><span class="Preform-identifier-syntax">K_person</span><span class="Preform-plain-syntax">) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><action-pattern></span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax">) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="2-cnd.html#SP10" class="function-link"><span class="Preform-function-syntax">Conditions::new_TEST_ACTION</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-function-syntax"><<rp>></span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">) };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> #</span><span class="Preform-identifier-syntax">endif</span>
|
||||
<span class="Preform-plain-syntax"> ==> { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> };</span>
|
||||
<span class="Preform-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-cad.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-vm.html">1</a></li><li class="progresschapter"><a href="2-spc.html">2</a></li><li class="progresschapter"><a href="3-pl.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ets.html">ets</a></li><li class="progresssection"><a href="4-cad.html">cad</a></li><li class="progresscurrent">teav</li><li class="progresssection"><a href="4-varc.html">varc</a></li><li class="progresssection"><a href="4-cap.html">cap</a></li><li class="progressnext"><a href="4-varc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -511,7 +511,7 @@ using a tense other than the present, and all is well.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VerbUsages::get_tense_used</span><span class="plain-syntax">(</span><span class="identifier-syntax">vu</span><span class="plain-syntax">) != </span><span class="identifier-syntax">IS_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">Binding::detect_locals</span><span class="plain-syntax">(</span><a href="2-spc.html#SP4" class="function-link"><span class="function-syntax">Specifications::to_proposition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-varc.html#SP11_3_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for referring to temporary values at a time when they did not exist</span><span class="named-paragraph-number">11.3.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP11" class="function-link"><span class="function-syntax">Conditions::attach_tense</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">VerbUsages::get_tense_used</span><span class="plain-syntax">(</span><span class="identifier-syntax">vu</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP10" class="function-link"><span class="function-syntax">Conditions::attach_tense</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">VerbUsages::get_tense_used</span><span class="plain-syntax">(</span><span class="identifier-syntax">vu</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">explicit_negation</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><a href="2-cnd.html#SP7" class="function-link"><span class="function-syntax">Conditions::negate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -7550,21 +7550,19 @@
|
|||
<s-table-column-name> of <s-value-uncached> in <s-value-uncached>
|
||||
(hits 2/579) (matched long text) constraint DS = {26} extremes [5, infinity)
|
||||
|
||||
<s-action-pattern-as-value> internal hits 3/19876 nti 10 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-sentence> hits 1074/2238 nti 11 constraint (none) extremes [3, infinity)
|
||||
<s-sentence> hits 1074/2238 nti 10 constraint (none) extremes [3, infinity)
|
||||
English:
|
||||
<np-existential> <s-existential-verb-tail>
|
||||
(hits 0/737) constraint DS = {19} extremes [3, infinity)
|
||||
<s-noun-phrase> <s-general-verb-tail>
|
||||
(hits 1074/1108) (matched long text) constraint (none) extremes [3, infinity)
|
||||
|
||||
<s-existential-verb-tail> hits 11/22 nti 12 constraint FS = {7} extremes [2, infinity)
|
||||
<s-existential-verb-tail> hits 11/22 nti 11 constraint FS = {7} extremes [2, infinity)
|
||||
English:
|
||||
<copular-verb> <s-noun-phrase-nounless>
|
||||
(hits 11/11) (matched long text) constraint FS = {7} extremes [2, infinity)
|
||||
|
||||
<s-general-verb-tail> hits 2149/6658 nti 13 constraint (none) extremes [2, infinity)
|
||||
<s-general-verb-tail> hits 2149/6658 nti 12 constraint (none) extremes [2, infinity)
|
||||
English:
|
||||
<universal-verb> <s-universal-term>
|
||||
(hits 0/660) constraint DS = {29} & FS = {9} extremes [4, infinity)
|
||||
|
@ -7578,7 +7576,7 @@
|
|||
<s-noun-phrase> to <s-noun-phrase>
|
||||
constraint DS = {29} extremes [3, infinity)
|
||||
|
||||
<s-np-with-relative-clause> hits 260/9966 nti 14 constraint (none) extremes [3, infinity)
|
||||
<s-np-with-relative-clause> hits 260/9966 nti 13 constraint (none) extremes [3, infinity)
|
||||
English:
|
||||
<s-noun-phrase-nounless> <s-implied-relative-verb-tail>
|
||||
(hits 169/4515) (matched long text) constraint DS = {13} extremes [3, infinity)
|
||||
|
@ -7592,7 +7590,7 @@
|
|||
not <copular-preposition> <s-noun-phrase-nounless>
|
||||
(hits 1/6077) (matched: 'not carried by the person asked') constraint DS = {13, 28} extremes [3, infinity)
|
||||
|
||||
<s-relative-verb-tail> hits 183/23360 nti 15 constraint DS = {30} extremes [3, infinity)
|
||||
<s-relative-verb-tail> hits 183/23360 nti 14 constraint DS = {30} extremes [3, infinity)
|
||||
English:
|
||||
<rc-marker> <universal-verb> <s-universal-term>
|
||||
(hits 0/2196) constraint DS = {29, 30} extremes [5, infinity)
|
||||
|
@ -7601,11 +7599,11 @@
|
|||
<rc-marker> <nonimperative-verb> <s-noun-phrase>
|
||||
(hits 151/5594) (matched: 'which provide the property initial appearance') constraint DS = {30} extremes [3, infinity)
|
||||
|
||||
<s-purely-physical-description> internal hits 791/18290 nti 16 constraint (none) extremes [1, infinity)
|
||||
<s-purely-physical-description> internal hits 791/18290 nti 15 constraint (none) extremes [1, infinity)
|
||||
|
||||
<if-forced-physical> internal hits 1208/34552 nti 17 constraint (none) extremes [0, 0]
|
||||
<if-forced-physical> internal hits 1208/34552 nti 16 constraint (none) extremes [0, 0]
|
||||
|
||||
<s-noun-phrase> hits 4662/9648 nti 18 constraint (none) extremes [1, infinity)
|
||||
<s-noun-phrase> hits 4662/9648 nti 17 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<if-forced-physical> <s-variable-as-value>
|
||||
(hits 30/4824) (matched: 'the person asked') constraint (none) extremes [1, infinity)
|
||||
|
@ -7614,7 +7612,7 @@
|
|||
^<if-forced-physical> <s-value-uncached>
|
||||
(hits 4602/4764) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-noun-phrase-nounless> hits 797/2188 nti 19 constraint (none) extremes [1, infinity)
|
||||
<s-noun-phrase-nounless> hits 797/2188 nti 18 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<if-forced-physical> <s-variable-as-value>
|
||||
(hits 143/1094) (matched: 'the second noun') constraint (none) extremes [1, infinity)
|
||||
|
@ -7634,7 +7632,7 @@
|
|||
<s-adjective-list-as-desc>
|
||||
(hits 2/248) (matched: 'switched off') constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-condition-uncached> hits 1071/2634 nti 20 constraint (none) extremes [0, infinity)
|
||||
<s-condition-uncached> hits 1071/2634 nti 19 constraint (none) extremes [0, infinity)
|
||||
English:
|
||||
<s-cond-pure>
|
||||
(hits 1069/1317) (matched long text) constraint (none) extremes [0, infinity)
|
||||
|
@ -7658,7 +7656,7 @@
|
|||
<s-cond-atomic>
|
||||
(hits 1197/1457) (matched long text) constraint (none) extremes [0, infinity)
|
||||
|
||||
<s-cond-with-chronology> internal hits 0/2914 nti 21 constraint (none) extremes [1, infinity)
|
||||
<s-cond-with-chronology> internal hits 0/2914 nti 20 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-cond-atomic> hits 1197/2914 nti 16 constraint (none) extremes [0, infinity)
|
||||
English:
|
||||
|
@ -7704,26 +7702,26 @@
|
|||
<np-existential> is/are {...}
|
||||
(hits 22/802) (matched long text) constraint DS = {9, 19} extremes [3, infinity)
|
||||
|
||||
<s-phrase-to-decide> internal hits 94/2912 nti 22 constraint (none) extremes [1, infinity)
|
||||
<s-phrase-to-decide> internal hits 94/2912 nti 21 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-phrase-option-in-use> internal hits 1/2914 nti 23 constraint (none) extremes [1, infinity)
|
||||
<s-phrase-option-in-use> internal hits 1/2914 nti 22 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-action-pattern-as-condition> hits 28/2746 nti 24 constraint (none) extremes [1, infinity)
|
||||
<s-action-pattern-as-condition> hits 28/2746 nti 23 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<we-are-action-pattern>
|
||||
(hits 28/1373) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-action-pattern-as-negated-condition> hits 0/2208 nti 25 constraint DS = {14} extremes [2, infinity)
|
||||
<s-action-pattern-as-negated-condition> hits 0/2208 nti 24 constraint DS = {14} extremes [2, infinity)
|
||||
English:
|
||||
<action-pattern-negated>
|
||||
(hits 0/1104) constraint DS = {14} extremes [2, infinity)
|
||||
|
||||
<s-past-action-pattern-as-condition> hits 0/2182 nti 26 constraint DS = {11} extremes [3, infinity)
|
||||
<s-past-action-pattern-as-condition> hits 0/2182 nti 25 constraint DS = {11} extremes [3, infinity)
|
||||
English:
|
||||
<action-pattern-past>
|
||||
(hits 0/1091) constraint DS = {11} extremes [3, infinity)
|
||||
|
||||
<s-past-action-pattern-as-negated-condition> hits 0/1890 nti 27 constraint DS = {12} extremes [4, infinity)
|
||||
<s-past-action-pattern-as-negated-condition> hits 0/1890 nti 26 constraint DS = {12} extremes [4, infinity)
|
||||
English:
|
||||
<action-pattern-past-negated>
|
||||
(hits 0/945) constraint DS = {12} extremes [4, infinity)
|
||||
|
@ -7761,28 +7759,28 @@
|
|||
<adaptive-adjective>
|
||||
(hits 0/2342) constraint (none) extremes [1, infinity)
|
||||
|
||||
<adaptive-adjective> internal hits 0/4684 nti 28 constraint (none) extremes [1, infinity)
|
||||
<adaptive-adjective> internal hits 0/4684 nti 27 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-to-phrase> internal hits 1374/2748 nti 29 constraint (none) extremes [1, infinity)
|
||||
<s-to-phrase> internal hits 1374/2748 nti 28 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-text-substitution> internal hits 2388/4776 nti 30 constraint (none) extremes [1, infinity)
|
||||
<s-text-substitution> internal hits 2388/4776 nti 29 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-object-instance> internal hits 1102/4644 nti r4 constraint CW = {r2, r4} extremes [1, infinity)
|
||||
|
||||
<s-non-object-instance> internal hits 4/252 nti 31 constraint (none) extremes [1, infinity)
|
||||
<s-non-object-instance> internal hits 4/252 nti 30 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-instance> nti 6 constraint (none) extremes [0, 0]
|
||||
<s-instance> nti 31 constraint (none) extremes [0, 0]
|
||||
English:
|
||||
<s-instance-of-object>
|
||||
constraint (none) extremes [0, 0]
|
||||
<s-instance-of-non-object>
|
||||
constraint (none) extremes [0, 0]
|
||||
|
||||
<instance-of-object> internal hits 0/172 nti 7 constraint (none) extremes [1, infinity)
|
||||
<instance-of-object> internal hits 0/172 nti 6 constraint (none) extremes [1, infinity)
|
||||
|
||||
<instance-of-non-object> internal hits 4/252 nti 8 constraint (none) extremes [1, infinity)
|
||||
<instance-of-non-object> internal hits 4/252 nti 7 constraint (none) extremes [1, infinity)
|
||||
|
||||
<instance> nti 9 constraint (none) extremes [1, infinity)
|
||||
<instance> nti 8 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<instance-of-object>
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
@ -7805,27 +7803,27 @@
|
|||
property {...}
|
||||
(hits 34/176) (matched: 'property initial appearance') constraint DS = {20} extremes [2, infinity)
|
||||
|
||||
<property-name> internal hits 69/430 nti 10 constraint (none) extremes [1, infinity)
|
||||
<property-name> internal hits 69/430 nti 9 constraint (none) extremes [1, infinity)
|
||||
|
||||
<either-or-property-name> internal hits 0/44 nti 11 constraint (none) extremes [1, infinity)
|
||||
<either-or-property-name> internal hits 0/44 nti 10 constraint (none) extremes [1, infinity)
|
||||
|
||||
<value-property-name> internal hits 127/2212 nti 12 constraint (none) extremes [1, infinity)
|
||||
<value-property-name> internal hits 127/2212 nti 11 constraint (none) extremes [1, infinity)
|
||||
|
||||
<property-name-v> internal hits 104/392 nti 13 constraint (none) extremes [1, infinity)
|
||||
<property-name-v> internal hits 104/392 nti 12 constraint (none) extremes [1, infinity)
|
||||
|
||||
<name-looking-like-property-test> hits 0/292 nti 22 constraint DS = {22} extremes [1, infinity)
|
||||
English:
|
||||
{***} of {***}
|
||||
(hits 0/1) constraint DS = {22} extremes [1, infinity)
|
||||
|
||||
<ambiguous-property-name> internal nti 14 constraint (none) extremes [1, infinity)
|
||||
<ambiguous-property-name> internal nti 13 constraint (none) extremes [1, infinity)
|
||||
|
||||
<same-property-as-construction> nti 23 constraint DS = {23} extremes [4, infinity)
|
||||
English:
|
||||
the same {...} as
|
||||
constraint DS = {23} extremes [4, infinity)
|
||||
|
||||
<relation-property-name> hits 22/44 nti 15 constraint (none) extremes [1, infinity)
|
||||
<relation-property-name> hits 22/44 nti 14 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<either-or-property-name>
|
||||
(hits 0/22) constraint (none) extremes [1, infinity)
|
||||
|
@ -7880,9 +7878,9 @@
|
|||
female
|
||||
(hits 1/1) (matched: 'female') constraint CS = {27} extremes [1, 1]
|
||||
|
||||
<rulebook-name> internal hits 82/164 nti 16 constraint (none) extremes [1, infinity)
|
||||
<rulebook-name> internal hits 82/164 nti 15 constraint (none) extremes [1, infinity)
|
||||
|
||||
<rule-name> internal hits 123/246 nti 17 constraint (none) extremes [1, infinity)
|
||||
<rule-name> internal hits 123/246 nti 16 constraint (none) extremes [1, infinity)
|
||||
|
||||
<new-rulebook-name> hits 431/862 nti 28 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -7906,16 +7904,16 @@
|
|||
{...} rulebook
|
||||
constraint DS = {29} extremes [2, infinity)
|
||||
|
||||
<rulebook-variable-name> hits 7/14 nti 18 constraint (none) extremes [1, infinity)
|
||||
<rulebook-variable-name> hits 7/14 nti 17 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<unfortunate-name>
|
||||
(hits 0/7) constraint (none) extremes [1, infinity)
|
||||
{...}
|
||||
(hits 7/7) (matched: 'specific carry out rulebook') constraint (none) extremes [1, infinity)
|
||||
|
||||
<rulebook-stem> internal hits 371/790 nti 19 constraint (none) extremes [1, infinity)
|
||||
<rulebook-stem> internal hits 371/790 nti 18 constraint (none) extremes [1, infinity)
|
||||
|
||||
<rulebook-stem-inner> hits 395/790 nti 20 constraint (none) extremes [1, infinity)
|
||||
<rulebook-stem-inner> hits 395/790 nti 19 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<indefinite-article> <rulebook-stem-inner-unarticled>
|
||||
(hits 19/395) (matched: 'a first turn sequence rule') constraint (none) extremes [2, infinity)
|
||||
|
@ -7959,7 +7957,7 @@
|
|||
{...}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<rulebook-default-outcome> nti 21 constraint (none) extremes [1, infinity)
|
||||
<rulebook-default-outcome> nti 20 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<rule-outcome>
|
||||
constraint CS = {6} extremes [1, 2]
|
||||
|
@ -7975,7 +7973,7 @@
|
|||
no outcome
|
||||
constraint CS = {6} extremes [2, 2]
|
||||
|
||||
<rulebook-outcome-list> hits 27/54 nti 22 constraint (none) extremes [1, infinity)
|
||||
<rulebook-outcome-list> hits 27/54 nti 21 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
{...}
|
||||
(hits 10/27) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
@ -7991,7 +7989,7 @@
|
|||
_,/and/or <rulebook-outcome-list>
|
||||
(hits 20/77) (matched long text) constraint DS = {8} extremes [2, infinity)
|
||||
|
||||
<rulebook-outcome-setting-entry> hits 27/54 nti 23 constraint (none) extremes [1, infinity)
|
||||
<rulebook-outcome-setting-entry> hits 27/54 nti 22 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<form-of-named-rule-outcome>
|
||||
(hits 27/27) (matched: 'there is sufficient light ( failure )') constraint (none) extremes [1, infinity)
|
||||
|
@ -8022,7 +8020,7 @@
|
|||
it is very unlikely
|
||||
(hits 1/1) (matched: 'it is very unlikely') constraint CS = {10} extremes [4, 4]
|
||||
|
||||
<named-rulebook-outcome> internal hits 8/1226 nti 24 constraint (none) extremes [1, infinity)
|
||||
<named-rulebook-outcome> internal hits 8/1226 nti 23 constraint (none) extremes [1, infinity)
|
||||
|
||||
<activity-sentence-subject> hits 35/70 nti 14 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -8056,7 +8054,7 @@
|
|||
{...} activity
|
||||
constraint DS = {15} extremes [2, infinity)
|
||||
|
||||
<activity-variable-name> nti 25 constraint (none) extremes [1, infinity)
|
||||
<activity-variable-name> nti 24 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<unfortunate-name>
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
@ -8070,7 +8068,7 @@
|
|||
<activity-list-unnegated>
|
||||
(hits 40/40) (matched: 'dropping or throwing or inserting or putting') constraint (none) extremes [1, infinity)
|
||||
|
||||
<activity-list-unnegated> hits 41/82 nti 26 constraint (none) extremes [1, infinity)
|
||||
<activity-list-unnegated> hits 41/82 nti 25 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
{...}
|
||||
(hits 14/41) (matched: 'throwing or inserting or putting') constraint (none) extremes [1, infinity)
|
||||
|
@ -8108,9 +8106,9 @@
|
|||
<s-type-expression-or-value>
|
||||
(hits 3/15) (matched: 'smelling') constraint (none) extremes [1, infinity)
|
||||
|
||||
<activity-name> internal hits 1/88 nti 27 constraint (none) extremes [1, infinity)
|
||||
<activity-name> internal hits 1/88 nti 26 constraint (none) extremes [1, infinity)
|
||||
|
||||
<if-parsing-al-conditions> internal hits 80/160 nti 28 constraint (none) extremes [0, 0]
|
||||
<if-parsing-al-conditions> internal hits 80/160 nti 27 constraint (none) extremes [0, 0]
|
||||
|
||||
<verify-expanded-text-substitution> hits 438/876 nti 20 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -8269,7 +8267,7 @@
|
|||
<anl-inner-diagnosis>
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<anl-inner-diagnosis> nti 29 constraint (none) extremes [1, infinity)
|
||||
<anl-inner-diagnosis> nti 28 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<anl-entry-diagnosis> <anl-tail-diagnosis>
|
||||
constraint DS = {8} extremes [3, infinity)
|
||||
|
@ -8283,7 +8281,7 @@
|
|||
_,/or <anl-inner-diagnosis>
|
||||
constraint DS = {8} extremes [2, infinity)
|
||||
|
||||
<anl-entry-diagnosis> nti 30 constraint (none) extremes [1, infinity)
|
||||
<anl-entry-diagnosis> nti 29 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
{......}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
@ -8365,7 +8363,7 @@
|
|||
to {...}
|
||||
(hits 302/302) (matched long text) constraint DS = {14} extremes [2, infinity)
|
||||
|
||||
<return-kind> hits 160/320 nti 31 constraint (none) extremes [1, infinity)
|
||||
<return-kind> hits 160/320 nti 30 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<k-kind-for-template>
|
||||
(hits 160/160) (matched: 'relation of objects') constraint (none) extremes [1, infinity)
|
||||
|
@ -8438,9 +8436,9 @@
|
|||
{......}
|
||||
(hits 0/5) constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-kind-as-name-token> internal hits 24/68 nti 6 constraint (none) extremes [1, infinity)
|
||||
<s-kind-as-name-token> internal hits 24/68 nti 31 constraint (none) extremes [1, infinity)
|
||||
|
||||
<phrase-option-declaration-list> hits 65/130 nti 7 constraint (none) extremes [1, infinity)
|
||||
<phrase-option-declaration-list> hits 65/130 nti 6 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
{...}
|
||||
(hits 20/65) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
@ -8460,14 +8458,14 @@
|
|||
and/or <phrase-option-declaration-list>
|
||||
(hits 0/37) constraint DS = {17} extremes [2, infinity)
|
||||
|
||||
<phrase-option-declaration-setting-entry> hits 65/130 nti 8 constraint (none) extremes [1, infinity)
|
||||
<phrase-option-declaration-setting-entry> hits 65/130 nti 7 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
{...}
|
||||
(hits 20/65) (matched: 'without printing a room description') constraint (none) extremes [1, infinity)
|
||||
{...}
|
||||
(hits 45/45) (matched: 'without printing a room description') constraint (none) extremes [1, infinity)
|
||||
|
||||
<phrase-option-list> hits 102/204 nti 9 constraint (none) extremes [1, infinity)
|
||||
<phrase-option-list> hits 102/204 nti 8 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
{...}
|
||||
(hits 43/102) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
@ -8483,14 +8481,14 @@
|
|||
_,/and <phrase-option-list>
|
||||
(hits 86/160) (matched long text) constraint DS = {18} extremes [2, infinity)
|
||||
|
||||
<phrase-option-setting-entry> hits 102/204 nti 10 constraint (none) extremes [1, infinity)
|
||||
<phrase-option-setting-entry> hits 102/204 nti 9 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<phrase-option>
|
||||
(hits 102/102) (matched: 'giving brief inventory information') constraint (none) extremes [1, infinity)
|
||||
{...}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<phrase-option> internal hits 102/3322 nti 11 constraint (none) extremes [1, infinity)
|
||||
<phrase-option> internal hits 102/3322 nti 10 constraint (none) extremes [1, infinity)
|
||||
|
||||
<heading-with-parenthesis> nti 20 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -8510,7 +8508,7 @@
|
|||
{...}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<new-called-name> hits 209/418 nti 12 constraint (none) extremes [1, infinity)
|
||||
<new-called-name> hits 209/418 nti 11 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<definite-article> <new-called-name-unarticled>
|
||||
(hits 14/74) (matched: 'the current working sack') constraint (none) extremes [2, infinity)
|
||||
|
@ -8528,7 +8526,7 @@
|
|||
{...}
|
||||
(hits 73/73) (matched: 'item being printed') constraint (none) extremes [1, infinity)
|
||||
|
||||
<existing-local-name> internal hits 136/418 nti 13 constraint (none) extremes [1, infinity)
|
||||
<existing-local-name> internal hits 136/418 nti 12 constraint (none) extremes [1, infinity)
|
||||
|
||||
<end-phrase-construction> nti 22 constraint DS = {22} extremes [2, infinity)
|
||||
English:
|
||||
|
@ -8546,7 +8544,7 @@
|
|||
{...}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<name-local-to-inline-stack-frame> internal hits 1559/3118 nti 14 constraint (none) extremes [1, infinity)
|
||||
<name-local-to-inline-stack-frame> internal hits 1559/3118 nti 13 constraint (none) extremes [1, infinity)
|
||||
|
||||
<definition-header> hits 44/1880 nti 24 constraint CS = {24} extremes [1, 1]
|
||||
English:
|
||||
|
@ -8912,14 +8910,14 @@
|
|||
entire game
|
||||
(hits 1/1) (matched: 'entire game') constraint CS = {8} extremes [2, 2]
|
||||
|
||||
<scene-ends-sentence-subject> hits 4/8 nti 15 constraint (none) extremes [1, infinity)
|
||||
<scene-ends-sentence-subject> hits 4/8 nti 14 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<scene-name>
|
||||
(hits 4/4) (matched: 'the entire game') constraint (none) extremes [1, infinity)
|
||||
{...}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<scene-ends-sentence-adverb> nti 16 constraint (none) extremes [1, infinity)
|
||||
<scene-ends-sentence-adverb> nti 15 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<scene-end-name-creating>
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
@ -8943,23 +8941,23 @@
|
|||
<s-condition>
|
||||
(hits 0/2) constraint (none) extremes [1, infinity)
|
||||
|
||||
<scene-name> hits 4/8 nti 17 constraint (none) extremes [1, infinity)
|
||||
<scene-name> hits 4/8 nti 16 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<definite-article> <scene-name-unarticled>
|
||||
(hits 4/4) (matched: 'the entire game') constraint (none) extremes [2, infinity)
|
||||
<scene-name-unarticled>
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<scene-name-unarticled> hits 4/8 nti 18 constraint (none) extremes [1, infinity)
|
||||
<scene-name-unarticled> hits 4/8 nti 17 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<instance-of-non-object>
|
||||
(hits 4/4) (matched: 'entire game') constraint (none) extremes [1, infinity)
|
||||
|
||||
<scene-end-name> internal nti 19 constraint (none) extremes [1, infinity)
|
||||
<scene-end-name> internal nti 18 constraint (none) extremes [1, infinity)
|
||||
|
||||
<scene-end-name-creating> internal nti 20 constraint (none) extremes [1, infinity)
|
||||
<scene-end-name-creating> internal nti 19 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-scene-description> nti 21 constraint (none) extremes [1, infinity)
|
||||
<s-scene-description> nti 20 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<s-value>
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
@ -8981,7 +8979,7 @@
|
|||
waiting
|
||||
(hits 1/20) (matched: 'waiting') constraint CS = {12} extremes [1, 1]
|
||||
|
||||
<new-action-sentence-object> hits 90/1036 nti 22 constraint DS = {13} extremes [1, infinity)
|
||||
<new-action-sentence-object> hits 90/1036 nti 21 constraint DS = {13} extremes [1, infinity)
|
||||
English:
|
||||
<indefinite-article> <new-action-sentence-object-unarticled>
|
||||
(hits 90/357) (matched long text) constraint DS = {13} extremes [2, infinity)
|
||||
|
@ -8995,7 +8993,7 @@
|
|||
action
|
||||
(hits 0/3) constraint CS = {13} extremes [1, 1]
|
||||
|
||||
<nounphrase-actionable> hits 90/182 nti 23 constraint (none) extremes [0, infinity)
|
||||
<nounphrase-actionable> hits 90/182 nti 22 constraint (none) extremes [0, infinity)
|
||||
English:
|
||||
^<variable-creation-tail>
|
||||
(hits 90/91) (matched long text) constraint (none) extremes [0, infinity)
|
||||
|
@ -9007,21 +9005,21 @@
|
|||
{***} variable
|
||||
(hits 0/90) constraint DS = {14} extremes [1, infinity)
|
||||
|
||||
<action-sentence-subject> hits 90/180 nti 24 constraint (none) extremes [1, infinity)
|
||||
<action-sentence-subject> hits 90/180 nti 23 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<action-name>
|
||||
(hits 0/90) constraint (none) extremes [1, infinity)
|
||||
{...}
|
||||
(hits 90/90) (matched: 'switching the story transcript on') constraint (none) extremes [1, infinity)
|
||||
|
||||
<action-sentence-object> hits 90/180 nti 25 constraint (none) extremes [1, infinity)
|
||||
<action-sentence-object> hits 90/180 nti 24 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<action-clauses>
|
||||
(hits 90/90) (matched long text) constraint (none) extremes [1, infinity)
|
||||
{...}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<action-clauses> hits 128/256 nti 26 constraint (none) extremes [1, infinity)
|
||||
<action-clauses> hits 128/256 nti 25 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
{...}
|
||||
(hits 19/128) (matched: 'applying to nothing or one thing and') constraint (none) extremes [1, infinity)
|
||||
|
@ -9077,12 +9075,12 @@
|
|||
{...}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<act-req> hits 70/140 nti 27 constraint (none) extremes [1, infinity)
|
||||
<act-req> hits 70/140 nti 26 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<act-req-inner>
|
||||
(hits 70/70) (matched: 'visible thing') constraint (none) extremes [1, infinity)
|
||||
|
||||
<act-req-inner> hits 70/140 nti 28 constraint (none) extremes [1, infinity)
|
||||
<act-req-inner> hits 70/140 nti 27 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<action-access> <k-kind>
|
||||
(hits 12/12) (matched: 'visible thing') constraint DS = {15} extremes [2, infinity)
|
||||
|
@ -9107,7 +9105,7 @@
|
|||
<action-variable-name>
|
||||
(hits 7/7) (matched: 'abbreviated form allowed') constraint (none) extremes [1, infinity)
|
||||
|
||||
<action-variable-name> hits 13/26 nti 29 constraint (none) extremes [1, infinity)
|
||||
<action-variable-name> hits 13/26 nti 28 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<unfortunate-name>
|
||||
(hits 0/13) constraint (none) extremes [1, infinity)
|
||||
|
@ -9128,7 +9126,7 @@
|
|||
report {...}
|
||||
constraint DS = {21} extremes [2, infinity)
|
||||
|
||||
<action-name> internal hits 227/664 nti 30 constraint (none) extremes [1, infinity)
|
||||
<action-name> internal hits 227/664 nti 29 constraint (none) extremes [1, infinity)
|
||||
|
||||
<action-optional-trailing-prepositions> hits 378/10710 nti 22 constraint DS = {22} extremes [2, infinity)
|
||||
English:
|
||||
|
@ -9166,14 +9164,14 @@
|
|||
{...}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<anl-to-tail> hits 326/652 nti 31 constraint (none) extremes [1, infinity)
|
||||
<anl-to-tail> hits 326/652 nti 30 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<anl-operand> <text-of-in-clause>
|
||||
(hits 0/120) constraint DS = {23} extremes [3, infinity)
|
||||
<anl-operand>
|
||||
(hits 326/326) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<anl-operand> hits 326/652 nti 6 constraint (none) extremes [1, infinity)
|
||||
<anl-operand> hits 326/652 nti 31 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
{...}
|
||||
(hits 326/326) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
@ -9187,7 +9185,7 @@
|
|||
in {...}
|
||||
(hits 12/1665) (matched: 'in the public library') constraint DS = {23} extremes [2, infinity)
|
||||
|
||||
<anl> hits 958/2310 nti 7 constraint (none) extremes [1, infinity)
|
||||
<anl> hits 958/2310 nti 6 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<anl-entry> <anl-tail>
|
||||
(hits 0/549) constraint DS = {24} extremes [3, infinity)
|
||||
|
@ -9201,7 +9199,7 @@
|
|||
_,/or <anl>
|
||||
(hits 0/1262) constraint DS = {24} extremes [2, infinity)
|
||||
|
||||
<anl-entry> hits 958/2310 nti 8 constraint (none) extremes [1, infinity)
|
||||
<anl-entry> hits 958/2310 nti 7 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<named-action-pattern>
|
||||
(hits 0/1155) constraint (none) extremes [1, infinity)
|
||||
|
@ -9210,7 +9208,7 @@
|
|||
<anl-entry-with-action>
|
||||
(hits 958/1155) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<anl-entry-with-action> internal hits 958/2310 nti 9 constraint (none) extremes [1, infinity)
|
||||
<anl-entry-with-action> internal hits 958/2310 nti 8 constraint (none) extremes [1, infinity)
|
||||
|
||||
<going-action> hits 1/180 nti 28 constraint CS = {28} extremes [1, 1]
|
||||
English:
|
||||
|
@ -9224,6 +9222,8 @@
|
|||
somewhere
|
||||
(hits 0/3) constraint CS = {29} extremes [1, 1]
|
||||
|
||||
<s-action-pattern-as-value> internal hits 3/19876 nti 9 constraint (none) extremes [1, infinity)
|
||||
|
||||
<action-pattern> hits 556/21224 nti 30 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
asking <action-parameter> to try <action-pattern-core>
|
||||
|
|
|
@ -23401,7 +23401,7 @@ ROOT_NT
|
|||
}
|
||||
LOGICAL_AND_NT'looking and a marked for listing person is not in the locati'
|
||||
TEST_VALUE_NT'looking'
|
||||
CONSTANT_NT'looking' {kind: action} {action pattern: <action: looking>} {explicit action: <action: looking>}
|
||||
CONSTANT_NT'looking' {kind: action} {explicit action: <action: looking>}
|
||||
TEST_PROPOSITION_NT'a marked for listing person is not in the location' {proposition: << Exists x : kind=person(x) ^ marked for listing(x) ^ NOT< ('the location' == <ContainerOf(*1) : x>) NOT> >>} {term: x}
|
||||
CODE_BLOCK_NT
|
||||
INVOCATION_LIST_NT'clear marked people' {indent: 3}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
Total memory consumption was 257775K = 252 MB
|
||||
|
||||
62.3% was used for 1339896 objects, in 278621 frames in 201 x 800K = 160800K = 157 MB:
|
||||
62.3% was used for 1339899 objects, in 278624 frames in 201 x 800K = 160800K = 157 MB:
|
||||
|
||||
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||
5.5% text_stream_array 2595 x 100 = 259500 objects, 14615040 bytes
|
||||
3.9% parse_node 129996 objects, 10399680 bytes
|
||||
2.8% verb_conjugation 160 objects, 7425280 bytes
|
||||
2.6% parse_node_annotation_array 431 x 500 = 215500 objects, 6909792 bytes
|
||||
2.4% linked_list 11778 objects, 6595680 bytes
|
||||
2.4% linked_list 11781 objects, 6597360 bytes
|
||||
2.3% inter_symbol_array 70 x 1024 = 71680 objects, 6310080 bytes
|
||||
1.2% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
|
||||
1.2% map_data 670 objects, 3178480 bytes
|
||||
|
@ -246,5 +246,5 @@ Total memory consumption was 257775K = 252 MB
|
|||
---- emitter array storage 12320 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
19.7% was overhead - 52176848 bytes = 50953K = 49 MB
|
||||
19.7% was overhead - 52175168 bytes = 50952K = 49 MB
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
100.0% in inform7 run
|
||||
66.9% in compilation to Inter
|
||||
25.5% in //Phrases::Manager::compile_first_block//
|
||||
8.5% in //Phrases::Manager::compile_as_needed//
|
||||
6.8% in //Strings::compile_responses//
|
||||
6.3% in //InferenceSubjects::emit_all//
|
||||
4.1% in //MajorNodes::pre_pass//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
1.9% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
25.4% in //Phrases::Manager::compile_first_block//
|
||||
8.8% in //Phrases::Manager::compile_as_needed//
|
||||
7.0% in //Strings::compile_responses//
|
||||
6.0% in //InferenceSubjects::emit_all//
|
||||
4.2% in //MajorNodes::pre_pass//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
1.8% in //Phrases::Manager::rulebooks_array//
|
||||
0.9% in //Phrases::Manager::traverse//
|
||||
0.9% in //RTVerbs::ConjugateVerb//
|
||||
1.1% in //RTVerbs::ConjugateVerb//
|
||||
0.7% in //Phrases::Manager::traverse//
|
||||
0.5% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.5% in //World::stage_V//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
|
@ -19,11 +19,11 @@
|
|||
0.1% in //RTKinds::compile_data_type_support_routines//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
3.4% not specifically accounted for
|
||||
3.3% not specifically accounted for
|
||||
30.6% in running Inter pipeline
|
||||
9.9% in step preparation
|
||||
9.8% in inter step 2/12: link
|
||||
7.2% in inter step 12/12: generate inform6 -> auto.inf
|
||||
9.7% in inter step 2/12: link
|
||||
7.3% in inter step 12/12: generate inform6 -> auto.inf
|
||||
0.3% in inter step 9/12: make-identifiers-unique
|
||||
0.1% in inter step 10/12: reconcile-verbs
|
||||
0.1% in inter step 11/12: eliminate-redundant-labels
|
||||
|
@ -31,6 +31,6 @@
|
|||
0.1% in inter step 6/12: assimilate
|
||||
0.1% in inter step 7/12: resolve-external-symbols
|
||||
0.1% in inter step 8/12: inspect-plugs
|
||||
2.2% not specifically accounted for
|
||||
1.9% in supervisor
|
||||
2.1% not specifically accounted for
|
||||
2.0% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -12,6 +12,8 @@ RelDynamicPointer
|
|||
ConstantStoredActionsWithTopics
|
||||
InheritedStoredActions
|
||||
TableDefinedSAs
|
||||
ForLengthsOfTime
|
||||
C9ScenesPastTenseActions
|
||||
PM_NamedAPIsArticle
|
||||
PM_NamedAPWithActor
|
||||
PM_GoingWrongKind
|
||||
|
|
|
@ -595,19 +595,10 @@ further sub-cases later.
|
|||
Problems::issue_problem_end();
|
||||
return;
|
||||
}
|
||||
#ifdef IF_MODULE
|
||||
if (Node::get_type(py) == ACTION_NT) {
|
||||
action_pattern *ap = Node::get_action_meaning(py);
|
||||
if (ap) {
|
||||
parse_node *val = Rvalues::from_action_pattern(ap);
|
||||
if (Rvalues::is_CONSTANT_of_kind(val, K_stored_action)) {
|
||||
Refiner::give_spec_to_noun(py, val);
|
||||
Assertions::make_coupling(px, py);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (PluginCalls::unusual_property_value(py)) {
|
||||
Assertions::make_coupling(px, py);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
Problems::Using::assertion_problem(Task::syntax_tree(), _p_(PM_PeculiarProperty),
|
||||
"that is a very peculiar property value",
|
||||
"and ought to be something more definite and explicit.");
|
||||
|
|
|
@ -316,7 +316,7 @@ is allowed to stand.
|
|||
Wordings::last_wn(Node::get_text(p->down->next)));
|
||||
if (Wordings::nonempty(W)) {
|
||||
if (<action-pattern>(W)) {
|
||||
ActionPatterns::make_ACTION_node(p, <<rp>>);
|
||||
ActionsNodes::convert_to_ACTION_node(p, <<rp>>);
|
||||
Node::set_text(p, W);
|
||||
}
|
||||
}
|
||||
|
@ -601,7 +601,7 @@ here, given that we know we are looking for a noun.
|
|||
#ifdef IF_MODULE
|
||||
if (Node::get_article(p) == NULL) {
|
||||
if (<action-pattern>(Node::get_text(p))) {
|
||||
ActionPatterns::make_ACTION_node(p, <<rp>>);
|
||||
ActionsNodes::convert_to_ACTION_node(p, <<rp>>);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,41 +71,13 @@ about this kind of value sometimes comes from a particular node somewhere
|
|||
in |py|, which (if it exists) we'll call its "governing node".
|
||||
|
||||
@<Perform creation duties on a copular sentence@> =
|
||||
@<Take care of two ambiguities to do with actions@>;
|
||||
PluginCalls::creation(px, py);
|
||||
parse_node *govx = NULL, *govy = NULL;
|
||||
kind *kindx = NULL, *kindy = NULL;
|
||||
@<Work out the kinds of value expressed by each side, and find their governing nodes@>;
|
||||
Assertions::Creator::noun_creator(px, kindy, govy);
|
||||
Assertions::Creator::noun_creator(py, kindx, govx);
|
||||
|
||||
@ The first case here is to take care of a sentence like:
|
||||
|
||||
>> Taking something is proactive behaviour.
|
||||
|
||||
Here |Refiner::refine| will correctly report that "proactive behaviour" is
|
||||
a new term, and give it a |CREATED_NT| node. But we don't want it to become an
|
||||
object or a value -- it will become a named kind of action instead. So we
|
||||
amend the node to |ACTION_NT|.
|
||||
|
||||
The second case occurs much less often -- for instance, the only time it comes
|
||||
up in the test suite is in the example "Chronic Hinting Syndrome":
|
||||
|
||||
>> Setting is a kind of value. The settings are bright and dull.
|
||||
|
||||
Here the first sentence wants to create something called "setting", which
|
||||
ought to have a |CREATED_NT| node type, but doesn't because it has been read
|
||||
as an action instead. We correct the spurious |ACTION_NT| to a |CREATED_NT|.
|
||||
|
||||
@<Take care of two ambiguities to do with actions@> =
|
||||
if ((Assertions::Creator::actionlike(px)) && (Node::get_type(py) == CREATED_NT))
|
||||
Node::set_type(py, ACTION_NT);
|
||||
if ((Assertions::Creator::actionlike(px)) && (Assertions::Creator::actionlike(py))) {
|
||||
Assertions::Creator::to_action_node(px);
|
||||
Assertions::Creator::to_action_node(py);
|
||||
}
|
||||
if ((Node::get_type(px) == ACTION_NT) && (Node::get_type(py) == KIND_NT))
|
||||
Node::set_type(px, CREATED_NT);
|
||||
|
||||
@ There are two ways to know the kind being expressed. One is that the sentence
|
||||
makes unambiguous use of a relation which forces the kinds on each side. For
|
||||
example,
|
||||
|
@ -144,34 +116,6 @@ The other way to find the kinds is to look at what the two sides explicitly say:
|
|||
kindy = Assertions::Creator::kind_of_subtree(py, &govy);
|
||||
}
|
||||
|
||||
@ =
|
||||
int Assertions::Creator::actionlike(parse_node *p) {
|
||||
#ifdef IF_MODULE
|
||||
if (Node::get_type(p) == ACTION_NT) return TRUE;
|
||||
if (Node::get_type(p) == PROPER_NOUN_NT) {
|
||||
parse_node *spec = Node::get_evaluation(p);
|
||||
if (Rvalues::is_CONSTANT_of_kind(spec, K_stored_action))
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void Assertions::Creator::to_action_node(parse_node *p) {
|
||||
#ifdef IF_MODULE
|
||||
if (Node::get_type(p) == ACTION_NT) return;
|
||||
if (Node::get_type(p) == PROPER_NOUN_NT) {
|
||||
parse_node *spec = Node::get_evaluation(p);
|
||||
if (Rvalues::is_CONSTANT_of_kind(spec, K_stored_action)) {
|
||||
explicit_action *ea = Node::get_constant_explicit_action(spec);
|
||||
ActionPatterns::make_ACTION_node(p, ea->as_described);
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
internal_error("misapplied to_action_node");
|
||||
}
|
||||
|
||||
@ So that just leaves the algorithms for finding the relation of a subtree:
|
||||
|
||||
=
|
||||
|
|
|
@ -75,6 +75,29 @@ int PluginCalls::intervene_in_assertion(parse_node *px, parse_node *py) {
|
|||
PLUGINS_CALL(INTERVENE_IN_ASSERTION_PLUG, px, py);
|
||||
}
|
||||
|
||||
@ Called from //assertions: The Creator// when a copular sentence may be
|
||||
creating something. For example, the actions plugin needs this.
|
||||
|
||||
@e CREATION_PLUG
|
||||
|
||||
=
|
||||
int PluginCalls::creation(parse_node *px, parse_node *py) {
|
||||
PLUGINS_CALL(CREATION_PLUG, px, py);
|
||||
}
|
||||
|
||||
@ Called from //assertions: Assertions// when an unfamiliar node type appears
|
||||
where a property value might be expected. For example, the actions plugin
|
||||
uses this to deal with setting a property to an |ACTION_NT| node. To
|
||||
intervene, set the node specification using //assertions: Refine Parse Tree//
|
||||
and return |TRUE|; or return |FALSE| to let nature take its course.
|
||||
|
||||
@e UNUSUAL_PROPERTY_VALUE_PLUG
|
||||
|
||||
=
|
||||
int PluginCalls::unusual_property_value(parse_node *py) {
|
||||
PLUGINS_CALL(UNUSUAL_PROPERTY_VALUE_PLUG, py);
|
||||
}
|
||||
|
||||
@ Called from //assertions: The Creator// when an instance is being made in
|
||||
an assembly, and its name may involve a genitive. For example, if the
|
||||
assembly says "every person has a nose", then normally this would be called
|
||||
|
@ -174,7 +197,20 @@ int PluginCalls::variable_set_warning(nonlocal_variable *q, parse_node *val) {
|
|||
}
|
||||
|
||||
@h Influencing values.
|
||||
Called from //values: Rvalues// to allow plugins to compile rvalues in
|
||||
Called from //values: Rvalues// to allow plugins to help decide whether values
|
||||
of the same kind would be equal if evaluated at runtime. For example, the
|
||||
"scenes" plugin uses this to determine if two |K_scene| constants are equal.
|
||||
To make a decision, set |rv| to either |TRUE| or |FALSE| and return |TRUE|.
|
||||
To make no decision, return |FALSE|.
|
||||
|
||||
@e COMPARE_CONSTANT_PLUG
|
||||
|
||||
=
|
||||
int PluginCalls::compare_constant(parse_node *c1, parse_node *c2, int *rv) {
|
||||
PLUGINS_CALL(COMPARE_CONSTANT_PLUG, c1, c2, rv);
|
||||
}
|
||||
|
||||
@ Called from //values: Rvalues// to allow plugins to compile rvalues in
|
||||
eccentric ways of their own: not in fact just for the whimsy of it, but to
|
||||
make it possible for plugins to support base kinds of their own. For example,
|
||||
the "actions" plugin needs this to deal with the "stored action" kind.
|
||||
|
|
|
@ -16,6 +16,7 @@ void Scenes::start(void) {
|
|||
PluginManager::plug(NEW_PROPERTY_NOTIFY_PLUG, Scenes::new_property_notify);
|
||||
PluginManager::plug(NEW_INSTANCE_NOTIFY_PLUG, Scenes::new_named_instance_notify);
|
||||
PluginManager::plug(NEW_BASE_KIND_NOTIFY_PLUG, Scenes::new_base_kind_notify);
|
||||
PluginManager::plug(COMPARE_CONSTANT_PLUG, Scenes::compare_CONSTANT);
|
||||
PluginManager::plug(MAKE_SPECIAL_MEANINGS_PLUG, Scenes::make_special_meanings);
|
||||
}
|
||||
|
||||
|
@ -62,6 +63,18 @@ int Scenes::new_base_kind_notify(kind *new_base, text_stream *name, wording W) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
int Scenes::compare_CONSTANT(parse_node *spec1, parse_node *spec2, int *rv) {
|
||||
kind *K = Node::get_kind_of_value(spec1);
|
||||
if (Kinds::eq(K, K_scene)) {
|
||||
if (ARvalues::to_scene(spec1) == ARvalues::to_scene(spec2)) {
|
||||
*rv = TRUE;
|
||||
}
|
||||
*rv = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ //scene// structures are automatically created whenever a new instance of the
|
||||
kind "scene" is created, and this is where that happens.
|
||||
|
||||
|
|
25
inform7/if-module/Chapter 4/Action Conditions.w
Normal file
25
inform7/if-module/Chapter 4/Action Conditions.w
Normal file
|
@ -0,0 +1,25 @@
|
|||
[AConditions::] Action Conditions.
|
||||
|
||||
A special condition for testing against action patterns.
|
||||
|
||||
@ =
|
||||
parse_node *AConditions::new_action_TEST_VALUE(action_pattern *ap, wording W) {
|
||||
if (ap == NULL) internal_error("null action pattern");
|
||||
parse_node *spec = Node::new_with_words(TEST_VALUE_NT, W);
|
||||
spec->down = ARvalues::from_action_pattern(ap);
|
||||
Node::set_text(spec->down, W);
|
||||
return spec;
|
||||
}
|
||||
|
||||
int AConditions::is_action_TEST_VALUE(parse_node *spec) {
|
||||
if ((Node::is(spec, TEST_VALUE_NT)) &&
|
||||
((ARvalues::to_action_pattern(spec->down)) ||
|
||||
(ARvalues::to_explicit_action(spec->down)))) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
parse_node *AConditions::action_tested(parse_node *spec) {
|
||||
if (AConditions::is_action_TEST_VALUE(spec) == FALSE)
|
||||
internal_error("action improperly extracted");
|
||||
return spec->down;
|
||||
}
|
115
inform7/if-module/Chapter 4/Action Kinds.w
Normal file
115
inform7/if-module/Chapter 4/Action Kinds.w
Normal file
|
@ -0,0 +1,115 @@
|
|||
[ARvalues::] Action Kinds.
|
||||
|
||||
Three action-related kinds of value.
|
||||
|
||||
@ The following represent action names, stored actions and descriptions of
|
||||
actions respectively: see //Actions Plugin// for what these terms mean.
|
||||
|
||||
= (early code)
|
||||
kind *K_action_name = NULL;
|
||||
kind *K_stored_action = NULL;
|
||||
kind *K_description_of_action = NULL;
|
||||
|
||||
@ These are created by a Neptune file inside //WorldModelKit//, and are
|
||||
recognised by their Inter identifiers:
|
||||
|
||||
@ =
|
||||
int ARvalues::new_base_kind_notify(kind *new_base, text_stream *name, wording W) {
|
||||
if (Str::eq_wide_string(name, L"ACTION_NAME_TY")) {
|
||||
K_action_name = new_base; return TRUE;
|
||||
}
|
||||
if (Str::eq_wide_string(name, L"DESCRIPTION_OF_ACTION_TY")) {
|
||||
K_description_of_action = new_base; return TRUE;
|
||||
}
|
||||
if (Str::eq_wide_string(name, L"STORED_ACTION_TY")) {
|
||||
K_stored_action = new_base; return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ A stored action can always be compared to a gerund: for instance,
|
||||
|
||||
>> if the current action is taking something...
|
||||
|
||||
=
|
||||
int ARvalues::actions_typecheck_equality(kind *K1, kind *K2) {
|
||||
if ((Kinds::eq(K1, K_stored_action)) && (Kinds::eq(K2, K_description_of_action)))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ All three of these kinds can have constant values. For an action name, these
|
||||
correspond simply to //action_name// objects:
|
||||
|
||||
=
|
||||
parse_node *ARvalues::from_action_name(action_name *val) {
|
||||
CONV_FROM(action_name, K_action_name) }
|
||||
action_name *ARvalues::to_action_name(parse_node *spec) {
|
||||
CONV_TO(action_name) }
|
||||
|
||||
@ When text is parsed to an action pattern, the result can be stored as a
|
||||
constant in two ways. If the pattern unambiguously describes a single explicit
|
||||
action, the result has the kind "stored action" and corresponds to an
|
||||
//explicit_action// object; if the pattern is looser than that, the result
|
||||
is a "description of action" and correspond to an //action_pattern//.
|
||||
|
||||
For example, "taking the golden telephone" might be a |K_stored_action|
|
||||
constant, but "doing something to the golden telephone" or "taking something"
|
||||
or "taking the golden telephone in the presence of Mr Wu" would all be
|
||||
|K_description_of_action|.
|
||||
|
||||
=
|
||||
parse_node *ARvalues::from_action_pattern(action_pattern *val) {
|
||||
int failure_code = 0;
|
||||
explicit_action *ea = ExplicitActions::from_action_pattern(val, &failure_code);
|
||||
if (ea) {
|
||||
parse_node *spec = Node::new(CONSTANT_NT);
|
||||
Node::set_kind_of_value(spec, K_stored_action);
|
||||
Node::set_constant_explicit_action(spec, ea);
|
||||
return spec;
|
||||
} else {
|
||||
CONV_FROM(action_pattern, K_description_of_action);
|
||||
}
|
||||
}
|
||||
action_pattern *ARvalues::to_action_pattern(parse_node *spec) {
|
||||
CONV_TO(action_pattern) }
|
||||
explicit_action *ARvalues::to_explicit_action(parse_node *spec) {
|
||||
CONV_TO(explicit_action) }
|
||||
|
||||
@ Finally, for a named action pattern, constant values correspond to
|
||||
//named_action_pattern// objects. These are actually never used at run-time
|
||||
and do not appear as rvalues in any permanent way inside the compiler, so
|
||||
the kind |K_description_of_action| is given to them only on principle. If
|
||||
they were used as values, this is the kind we would probably give them.
|
||||
|
||||
=
|
||||
parse_node *ARvalues::from_named_action_pattern(named_action_pattern *val) {
|
||||
CONV_FROM(named_action_pattern, K_description_of_action ) }
|
||||
named_action_pattern *ARvalues::to_named_action_pattern(parse_node *spec) {
|
||||
CONV_TO(named_action_pattern) }
|
||||
|
||||
parse_node *ARvalues::from_grammar_verb(grammar_verb *val) {
|
||||
CONV_FROM(grammar_verb, K_understanding) }
|
||||
grammar_verb *ARvalues::to_grammar_verb(parse_node *spec) {
|
||||
CONV_TO(grammar_verb) }
|
||||
parse_node *ARvalues::from_scene(scene *val) {
|
||||
CONV_FROM(scene, K_scene) }
|
||||
scene *ARvalues::to_scene(parse_node *spec) {
|
||||
CONV_TO(scene) }
|
||||
|
||||
@ It's not useful to be able to compare description of action constants for
|
||||
equality in this sense. There would be a case for doing so with stored actions,
|
||||
but in practice there seems little need, so for the moment we do not.
|
||||
|
||||
=
|
||||
int ARvalues::compare_CONSTANT(parse_node *spec1, parse_node *spec2, int *rv) {
|
||||
kind *K = Node::get_kind_of_value(spec1);
|
||||
if (Kinds::eq(K, K_action_name)) {
|
||||
if (ARvalues::to_action_name(spec1) == ARvalues::to_action_name(spec2)) {
|
||||
*rv = TRUE;
|
||||
}
|
||||
*rv = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
|
@ -34,7 +34,7 @@ void ActionNameNames::baptise(action_name *an, wording W) {
|
|||
WordAssemblages::from_wording(W));
|
||||
wording AW = WordAssemblages::to_wording(&wa);
|
||||
an->naming_data.as_noun = Nouns::new_proper_noun(AW, NEUTER_GENDER, ADD_TO_LEXICON_NTOPT,
|
||||
MISCELLANEOUS_MC, Rvalues::from_action_name(an), Task::language_of_syntax());
|
||||
MISCELLANEOUS_MC, ARvalues::from_action_name(an), Task::language_of_syntax());
|
||||
Vocabulary::set_flags(Lexer::word(Wordings::first_wn(W)), ACTION_PARTICIPLE_MC);
|
||||
action_name *an2;
|
||||
LOOP_OVER(an2, action_name)
|
||||
|
|
|
@ -320,7 +320,7 @@ int APClauses::cmp_clauses(int C1, action_pattern *ap1, int C2, action_pattern *
|
|||
}
|
||||
|
||||
int APClauses::viable_in_past_tense(action_pattern *ap) {
|
||||
if (ActionPatterns::is_overspecific(ap)) return FALSE;
|
||||
if (ExplicitActions::ap_overspecific(ap)) return FALSE;
|
||||
if (APClauses::pta_acceptable(APClauses::get_val(ap, ACTOR_AP_CLAUSE)) == FALSE) return FALSE;
|
||||
if (APClauses::pta_acceptable(APClauses::get_val(ap, NOUN_AP_CLAUSE)) == FALSE) return FALSE;
|
||||
if (APClauses::pta_acceptable(APClauses::get_val(ap, SECOND_AP_CLAUSE)) == FALSE) return FALSE;
|
||||
|
|
|
@ -43,19 +43,7 @@ action_pattern ActionPatterns::new(void) {
|
|||
return ap;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
typedef struct explicit_action {
|
||||
int request;
|
||||
struct action_name *action;
|
||||
struct parse_node *actor;
|
||||
struct parse_node *first_noun;
|
||||
struct parse_node *second_noun;
|
||||
struct action_pattern *as_described;
|
||||
} explicit_action;
|
||||
|
||||
|
||||
@ =
|
||||
void ActionPatterns::log(action_pattern *ap) {
|
||||
ActionPatterns::write(DL, ap);
|
||||
}
|
||||
|
@ -112,54 +100,6 @@ int ActionPatterns::object_based(action_pattern *ap) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
explicit_action *ActionPatterns::to_explicit_action(action_pattern *ap, int *reason) {
|
||||
if (ActionPatterns::is_unspecific(ap)) { *reason = 1; return NULL; }
|
||||
if (ActionPatterns::is_overspecific(ap)) { *reason = 2; return NULL; }
|
||||
*reason = 0;
|
||||
explicit_action *ea = CREATE(explicit_action);
|
||||
ea->action = ActionNameLists::get_the_one_true_action(ap->action_list);
|
||||
ea->request = APClauses::is_request(ap);
|
||||
ea->actor = APClauses::get_val(ap, ACTOR_AP_CLAUSE);
|
||||
ea->first_noun = APClauses::get_val(ap, NOUN_AP_CLAUSE);
|
||||
ea->second_noun = APClauses::get_val(ap, SECOND_AP_CLAUSE);
|
||||
ea->as_described = ap;
|
||||
return ea;
|
||||
}
|
||||
|
||||
void ActionPatterns::make_ACTION_node(parse_node *p, action_pattern *ap) {
|
||||
Node::set_type(p, ACTION_NT);
|
||||
Node::set_action_meaning(p, ap);
|
||||
p->down = NULL;
|
||||
}
|
||||
|
||||
int ActionPatterns::is_unspecific(action_pattern *ap) {
|
||||
action_name *an = ActionPatterns::required_action(ap);
|
||||
if (an == NULL) return TRUE;
|
||||
if ((ActionSemantics::must_have_noun(an)) && (APClauses::get_val(ap, NOUN_AP_CLAUSE) == NULL)) return TRUE;
|
||||
if ((ActionSemantics::must_have_second(an)) && (APClauses::get_val(ap, SECOND_AP_CLAUSE) == NULL)) return TRUE;
|
||||
if ((ActionSemantics::can_have_noun(an)) &&
|
||||
(ActionPatterns::ap_clause_is_unspecific(APClauses::get_val(ap, NOUN_AP_CLAUSE)))) return TRUE;
|
||||
if ((ActionSemantics::can_have_second(an)) &&
|
||||
(ActionPatterns::ap_clause_is_unspecific(APClauses::get_val(ap, SECOND_AP_CLAUSE)))) return TRUE;
|
||||
if (ActionPatterns::ap_clause_is_unspecific(APClauses::get_val(ap, ACTOR_AP_CLAUSE))) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int ActionPatterns::ap_clause_is_unspecific(parse_node *spec) {
|
||||
if (spec == NULL) return FALSE;
|
||||
if (Specifications::is_description(spec) == FALSE) return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int ActionPatterns::is_overspecific(action_pattern *ap) {
|
||||
for (ap_clause *apoc = (ap)?(ap->ap_clauses):NULL; apoc; apoc = apoc->next)
|
||||
if ((APClauses::aspect(apoc) != PRIMARY_APCA) && (apoc->clause_spec))
|
||||
return TRUE;
|
||||
if (APClauses::has_any_actor(ap)) return TRUE;
|
||||
if (ap->duration) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void ActionPatterns::suppress_action_testing(action_pattern *ap) {
|
||||
if ((ap->duration == NULL) && (ap->action_list))
|
||||
ActionNameLists::suppress_action_testing(ap->action_list);
|
||||
|
@ -188,6 +128,19 @@ int ActionPatterns::makes_callings(action_pattern *ap) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
action_pattern *ActionPatterns::action_from_TEST(parse_node *spec) {
|
||||
if (AConditions::is_action_TEST_VALUE(spec)) {
|
||||
action_pattern *ap = ARvalues::to_action_pattern(
|
||||
AConditions::action_tested(spec));
|
||||
if (ap == NULL) {
|
||||
explicit_action *ea = Node::get_constant_explicit_action(AConditions::action_tested(spec));
|
||||
if (ea) ap = ea->as_described;
|
||||
}
|
||||
return ap;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int ActionPatterns::compare_specificity(action_pattern *ap1, action_pattern *ap2) {
|
||||
if ((ap1 == NULL) && (ap2)) return -1;
|
||||
if ((ap1) && (ap2 == NULL)) return 1;
|
||||
|
|
|
@ -9,7 +9,7 @@ into creations of action variables:
|
|||
=
|
||||
int ActionVariables::actions_offered_property(kind *K, parse_node *owner, parse_node *prop) {
|
||||
if (Kinds::eq(K, K_action_name)) {
|
||||
action_name *an = Rvalues::to_action_name(owner);
|
||||
action_name *an = ARvalues::to_action_name(owner);
|
||||
if (an == NULL) internal_error("failed to extract action-name structure");
|
||||
if (global_pass_state.pass == 1) {
|
||||
@<Require the variable to have an explicit name@>;
|
||||
|
|
|
@ -5,16 +5,41 @@ A plugin for actions, by which animate characters change the world model.
|
|||
@ Support for actions is contained in the "actions" plugin, which occupies this
|
||||
entire chapter. The test group |:actions| may be helpful in trouble-shooting here.
|
||||
|
||||
It may be helpful to distinguish these ideas right from the outset:
|
||||
|
||||
(*) An "action" (or "explicit action", for the sake of clarity) is a specific
|
||||
impulse by a person in the model world to effect some change within it: for
|
||||
example, "Henry taking the brick". Here Henry is the "actor", and the brick is
|
||||
"the noun". Actions can be "stored" so that they are values in their own
|
||||
right; thus, a variable could be set to the value "Henry taking the brick",
|
||||
and this would have kind |K_stored_action|. Inside the compiler they are
|
||||
represented by //explicit_action// objects.
|
||||
(*) An "action name" -- not an ideal thing to call it, but traditional -- is the
|
||||
type of action involved, taken in isolation: for example, "taking". These can
|
||||
also be values at run-time, they have kind |K_action_name|, and they are
|
||||
represented in the comoiler by //action_name// objections.
|
||||
(*) An "action pattern" is a textual description which matches some actions but
|
||||
not others, and can be vague or specific: for example, "wearing or examining
|
||||
something". Action patterns become values of the kind |K_description_of_action|.
|
||||
They can also be aggregated into "named action patterns", which characterise
|
||||
behaviour; see //action_pattern// and //named_action_pattern//.
|
||||
(*) A "past action pattern", which can never in any way be a value, is a
|
||||
description of an action which have happened in the past: for example, "dropped
|
||||
the hat". These are just a special case of action patterns.
|
||||
|
||||
=
|
||||
void ActionsPlugin::start(void) {
|
||||
ActionsNodes::nodes_and_annotations();
|
||||
|
||||
PluginManager::plug(MAKE_SPECIAL_MEANINGS_PLUG, ActionsPlugin::make_special_meanings);
|
||||
PluginManager::plug(NEW_BASE_KIND_NOTIFY_PLUG, ActionsPlugin::new_base_kind_notify);
|
||||
PluginManager::plug(NEW_BASE_KIND_NOTIFY_PLUG, ARvalues::new_base_kind_notify);
|
||||
PluginManager::plug(COMPARE_CONSTANT_PLUG, ARvalues::compare_CONSTANT);
|
||||
PluginManager::plug(COMPILE_CONSTANT_PLUG, RTActions::actions_compile_constant);
|
||||
PluginManager::plug(CREATION_PLUG, ActionsNodes::creation);
|
||||
PluginManager::plug(UNUSUAL_PROPERTY_VALUE_PLUG, ActionsNodes::unusual_property_value_node);
|
||||
PluginManager::plug(OFFERED_PROPERTY_PLUG, ActionVariables::actions_offered_property);
|
||||
PluginManager::plug(OFFERED_SPECIFICATION_PLUG, ActionsPlugin::actions_offered_specification);
|
||||
PluginManager::plug(TYPECHECK_EQUALITY_PLUG, ActionsPlugin::actions_typecheck_equality);
|
||||
PluginManager::plug(TYPECHECK_EQUALITY_PLUG, ARvalues::actions_typecheck_equality);
|
||||
PluginManager::plug(PRODUCTION_LINE_PLUG, ActionsPlugin::production_line);
|
||||
|
||||
Vocabulary::set_flags(Vocabulary::entry_for_text(L"doing"), ACTION_PARTICIPLE_MC);
|
||||
|
@ -32,59 +57,6 @@ int ActionsPlugin::production_line(int stage, int debugging, stopwatch_timer *se
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
@ It may be useful to distinguish three ideas right from the outset:
|
||||
|
||||
(*) An "action" is a specific impulse by a person in the model world to effect
|
||||
some change within it: for example, "Henry taking the brick". Here Henry is the
|
||||
"actor", and the brick is "the noun". Actions can be "stored" so that they
|
||||
are values in their own right; thus, a variable could be set to the value
|
||||
"Henry taking the brick", and this would have kind |K_stored_action|.
|
||||
(*) An "action name" -- not an ideal thing to call it, but traditional -- is the
|
||||
type of action involved, taken in isolation: for example, "taking". These can
|
||||
also be values at run-time, and have kind |K_action_name|.
|
||||
(*) An "action pattern" is a textual description which matches some actions but
|
||||
not others, and can be vague or specific: for example, "wearing or examining
|
||||
something". Action patterns are in general not values, but names can be given
|
||||
to them so that they are -- see //Named Action Patterns// -- and then they
|
||||
have the kind |K_description_of_action|.
|
||||
(*) A "past action pattern", which can never in any way be a value, is a
|
||||
description of an action which have happened in the past: for example, "dropped
|
||||
the hat".
|
||||
|
||||
= (early code)
|
||||
kind *K_action_name = NULL;
|
||||
kind *K_stored_action = NULL;
|
||||
kind *K_description_of_action = NULL;
|
||||
|
||||
@ These are created by a Neptune file inside //WorldModelKit//, and are
|
||||
recognised by their Inter identifiers:
|
||||
|
||||
@ =
|
||||
int ActionsPlugin::new_base_kind_notify(kind *new_base, text_stream *name, wording W) {
|
||||
if (Str::eq_wide_string(name, L"ACTION_NAME_TY")) {
|
||||
K_action_name = new_base; return TRUE;
|
||||
}
|
||||
if (Str::eq_wide_string(name, L"DESCRIPTION_OF_ACTION_TY")) {
|
||||
K_description_of_action = new_base; return TRUE;
|
||||
}
|
||||
if (Str::eq_wide_string(name, L"STORED_ACTION_TY")) {
|
||||
K_stored_action = new_base; return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ A stored action can always be compared to a gerund: for instance,
|
||||
|
||||
>> if the current action is taking something...
|
||||
|
||||
=
|
||||
int ActionsPlugin::actions_typecheck_equality(kind *K1, kind *K2) {
|
||||
if ((Kinds::eq(K1, K_stored_action)) &&
|
||||
(Kinds::eq(K2, K_description_of_action)))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ Though |K_action_name| is very like an enumeration kind, its possible values,
|
||||
which correspond to //action_name// objects, are not strictly speaking instances
|
||||
in the Inform world model. (Because they do not have properties: see //Action Variables//
|
||||
|
@ -127,7 +99,7 @@ a "specification" text as one, and have to make their own arrangements:
|
|||
int ActionsPlugin::actions_offered_specification(parse_node *owner, wording W) {
|
||||
if (Rvalues::is_CONSTANT_of_kind(owner, K_action_name)) {
|
||||
IXActions::actions_set_specification_text(
|
||||
Rvalues::to_action_name(owner), Wordings::first_wn(W));
|
||||
ARvalues::to_action_name(owner), Wordings::first_wn(W));
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
|
|
@ -48,6 +48,80 @@ void ActionsNodes::nodes_and_annotations(void) {
|
|||
Annotations::allow(CONSTANT_NT, constant_explicit_action_ANNOT);
|
||||
}
|
||||
|
||||
@ ACTION nodes are converted from existing ones, not born:
|
||||
|
||||
=
|
||||
void ActionsNodes::convert_to_ACTION_node(parse_node *p, action_pattern *ap) {
|
||||
Node::set_type(p, ACTION_NT);
|
||||
Node::set_action_meaning(p, ap);
|
||||
p->down = NULL;
|
||||
}
|
||||
|
||||
int ActionsNodes::is_actionlike(parse_node *p) {
|
||||
if (Node::get_type(p) == ACTION_NT) return TRUE;
|
||||
if ((K_stored_action) && (Node::get_type(p) == PROPER_NOUN_NT)) {
|
||||
parse_node *spec = Node::get_evaluation(p);
|
||||
if (Rvalues::is_CONSTANT_of_kind(spec, K_stored_action)) return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void ActionsNodes::convert_stored_action_constant(parse_node *p) {
|
||||
if (Node::get_type(p) == PROPER_NOUN_NT) {
|
||||
parse_node *spec = Node::get_evaluation(p);
|
||||
if (Rvalues::is_CONSTANT_of_kind(spec, K_stored_action)) {
|
||||
explicit_action *ea = Node::get_constant_explicit_action(spec);
|
||||
ActionsNodes::convert_to_ACTION_node(p, ea->as_described);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ The first case here is to take care of a sentence like:
|
||||
|
||||
>> Taking something is proactive behaviour.
|
||||
|
||||
Here |Refiner::refine| will correctly report that "proactive behaviour" is
|
||||
a new term, and give it a |CREATED_NT| node. But we don't want it to become an
|
||||
object or a value -- it will become a named kind of action instead. So we
|
||||
amend the node to |ACTION_NT|.
|
||||
|
||||
The second case occurs much less often -- for instance, the only time it comes
|
||||
up in the test suite is in the example "Chronic Hinting Syndrome":
|
||||
|
||||
>> Setting is a kind of value. The settings are bright and dull.
|
||||
|
||||
Here the first sentence wants to create something called "setting", which
|
||||
ought to have a |CREATED_NT| node type, but doesn't because it has been read
|
||||
as an action instead. We correct the spurious |ACTION_NT| to a |CREATED_NT|.
|
||||
|
||||
=
|
||||
int ActionsNodes::creation(parse_node *px, parse_node *py) {
|
||||
if ((ActionsNodes::is_actionlike(px)) && (Node::get_type(py) == CREATED_NT))
|
||||
Node::set_type(py, ACTION_NT);
|
||||
if ((ActionsNodes::is_actionlike(px)) && (ActionsNodes::is_actionlike(py))) {
|
||||
ActionsNodes::convert_stored_action_constant(px);
|
||||
ActionsNodes::convert_stored_action_constant(py);
|
||||
}
|
||||
if ((Node::get_type(px) == ACTION_NT) && (Node::get_type(py) == KIND_NT))
|
||||
Node::set_type(px, CREATED_NT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int ActionsNodes::unusual_property_value_node(parse_node *py) {
|
||||
if (Node::get_type(py) == ACTION_NT) {
|
||||
action_pattern *ap = Node::get_action_meaning(py);
|
||||
if (ap) {
|
||||
parse_node *val = ARvalues::from_action_pattern(ap);
|
||||
if (Rvalues::is_CONSTANT_of_kind(val, K_stored_action)) {
|
||||
Refiner::give_spec_to_noun(py, val);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ And for the debugging log:
|
||||
|
||||
=
|
||||
|
|
68
inform7/if-module/Chapter 4/Explicit Actions.w
Normal file
68
inform7/if-module/Chapter 4/Explicit Actions.w
Normal file
|
@ -0,0 +1,68 @@
|
|||
[ExplicitActions::] Explicit Actions.
|
||||
|
||||
An exactly specified action is called "explicit".
|
||||
|
||||
@ Explicit actions are used inside the compiler whenever we kmow exactly what
|
||||
action we are talking about; stored action constants are //explicit_action//
|
||||
objects in a thin wrapper -- see //Action Kinds//.
|
||||
|
||||
=
|
||||
typedef struct explicit_action {
|
||||
int request;
|
||||
struct action_name *action;
|
||||
struct parse_node *actor;
|
||||
struct parse_node *first_noun;
|
||||
struct parse_node *second_noun;
|
||||
struct action_pattern *as_described;
|
||||
} explicit_action;
|
||||
|
||||
@
|
||||
|
||||
@d UNDERSPECIFIC_EA_FAILURE 1
|
||||
@d OVERSPECIFIC_EA_FAILURE 2
|
||||
|
||||
=
|
||||
explicit_action *ExplicitActions::from_action_pattern(action_pattern *ap, int *reason) {
|
||||
if (ExplicitActions::ap_underspecific(ap)) { *reason = UNDERSPECIFIC_EA_FAILURE; return NULL; }
|
||||
if (ExplicitActions::ap_overspecific(ap)) { *reason = OVERSPECIFIC_EA_FAILURE; return NULL; }
|
||||
*reason = 0;
|
||||
explicit_action *ea = CREATE(explicit_action);
|
||||
ea->action = ActionNameLists::get_the_one_true_action(ap->action_list);
|
||||
ea->request = APClauses::is_request(ap);
|
||||
ea->actor = APClauses::get_val(ap, ACTOR_AP_CLAUSE);
|
||||
ea->first_noun = APClauses::get_val(ap, NOUN_AP_CLAUSE);
|
||||
ea->second_noun = APClauses::get_val(ap, SECOND_AP_CLAUSE);
|
||||
ea->as_described = ap;
|
||||
return ea;
|
||||
}
|
||||
|
||||
int ExplicitActions::ap_underspecific(action_pattern *ap) {
|
||||
action_name *an = ActionPatterns::required_action(ap);
|
||||
if (an == NULL) return TRUE;
|
||||
if ((ActionSemantics::must_have_noun(an)) &&
|
||||
(APClauses::get_val(ap, NOUN_AP_CLAUSE) == NULL)) return TRUE;
|
||||
if ((ActionSemantics::must_have_second(an)) &&
|
||||
(APClauses::get_val(ap, SECOND_AP_CLAUSE) == NULL)) return TRUE;
|
||||
if ((ActionSemantics::can_have_noun(an)) &&
|
||||
(ExplicitActions::clause_unspecific(ap, NOUN_AP_CLAUSE))) return TRUE;
|
||||
if ((ActionSemantics::can_have_second(an)) &&
|
||||
(ExplicitActions::clause_unspecific(ap, SECOND_AP_CLAUSE))) return TRUE;
|
||||
if (ExplicitActions::clause_unspecific(ap, ACTOR_AP_CLAUSE)) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int ExplicitActions::clause_unspecific(action_pattern *ap, int C) {
|
||||
parse_node *spec = APClauses::get_val(ap, C);
|
||||
if (spec == NULL) return FALSE;
|
||||
if (Specifications::is_description(spec) == FALSE) return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int ExplicitActions::ap_overspecific(action_pattern *ap) {
|
||||
for (ap_clause *apoc = (ap)?(ap->ap_clauses):NULL; apoc; apoc = apoc->next)
|
||||
if ((APClauses::aspect(apoc) != PRIMARY_APCA) && (apoc->clause_spec))
|
||||
return TRUE;
|
||||
if (APClauses::has_any_actor(ap)) return TRUE;
|
||||
if (ap->duration) return TRUE;
|
||||
return FALSE;
|
||||
}
|
|
@ -60,7 +60,7 @@ void NamedActionPatterns::add(action_pattern *ap, wording W) {
|
|||
|
||||
named_action_pattern *NamedActionPatterns::by_name(wording W) {
|
||||
parse_node *p = Lexicon::retrieve(NAMED_AP_MC, W);
|
||||
if (p) return Rvalues::to_named_action_pattern(p);
|
||||
if (p) return ARvalues::to_named_action_pattern(p);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ named_action_pattern *NamedActionPatterns::new(wording W) {
|
|||
nap->text_of_declaration = W;
|
||||
nap->compilation_data = RTNamedActionPatterns::new(nap);
|
||||
nap->as_noun = Nouns::new_proper_noun(W, NEUTER_GENDER, ADD_TO_LEXICON_NTOPT,
|
||||
NAMED_AP_MC, Rvalues::from_named_action_pattern(nap), Task::language_of_syntax());
|
||||
NAMED_AP_MC, ARvalues::from_named_action_pattern(nap), Task::language_of_syntax());
|
||||
return nap;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,31 @@
|
|||
|
||||
Turning text into APs.
|
||||
|
||||
@ Action patterns, such as "taking a container" or "opening a closed door",
|
||||
are wrapped up as values here:
|
||||
|
||||
=
|
||||
<s-action-pattern-as-value> internal {
|
||||
if (Wordings::mismatched_brackets(W)) { ==> { fail nonterminal }; }
|
||||
if (Lexer::word(Wordings::first_wn(W)) == OPENBRACE_V) { ==> { fail nonterminal }; }
|
||||
int pto = permit_trying_omission;
|
||||
if (<definite-article>(Wordings::first_word(W)) == FALSE) permit_trying_omission = TRUE;
|
||||
int r = <action-pattern>(W);
|
||||
permit_trying_omission = pto;
|
||||
if (r) {
|
||||
action_pattern *ap = <<rp>>;
|
||||
if ((APClauses::get_val(ap, ACTOR_AP_CLAUSE)) &&
|
||||
(Dash::validate_parameter(APClauses::get_val(ap, ACTOR_AP_CLAUSE), K_person) == FALSE)) {
|
||||
r = <action-pattern>(W);
|
||||
}
|
||||
}
|
||||
if (r) {
|
||||
==> { -, AConditions::new_action_TEST_VALUE(<<rp>>, W) };
|
||||
return TRUE;
|
||||
}
|
||||
==> { fail nonterminal };
|
||||
}
|
||||
|
||||
@ When we parse action patterns, we record why they fail, in order to make
|
||||
it easier to produce helpful error messages. (We can't simply fire off
|
||||
errors at the time they occur, because text is often parsed in several
|
||||
|
@ -686,7 +711,7 @@ description.
|
|||
&& (K_understanding)
|
||||
&& (Kinds::eq(ActionSemantics::kind_of_second(ActionNameLists::action(entry)), K_understanding))
|
||||
&& (<understanding-action-irregular-operand>(ActionNameLists::par(entry, 1)))) {
|
||||
parse_node *val = Rvalues::from_grammar_verb(NULL); /* Why no GV here? */
|
||||
parse_node *val = ARvalues::from_grammar_verb(NULL); /* Why no GV here? */
|
||||
Node::set_text(val, ActionNameLists::par(entry, 1));
|
||||
APClauses::set_val(&trial_ap, SECOND_AP_CLAUSE, val);
|
||||
} else {
|
||||
|
|
|
@ -387,7 +387,7 @@ parse_node *PL::Parsing::Tokens::determine(parse_node *pn, int depth, int *score
|
|||
}
|
||||
|
||||
@<Determine a named grammar token@> =
|
||||
parse_node *val = Rvalues::from_grammar_verb(<<grammar_verb:named>>);
|
||||
parse_node *val = ARvalues::from_grammar_verb(<<grammar_verb:named>>);
|
||||
spec = PL::Parsing::Verbs::determine(<<grammar_verb:named>>, depth+1); /* this is where Phase II recurses */
|
||||
Node::set_grammar_value(pn, val);
|
||||
|
||||
|
@ -1245,7 +1245,7 @@ kind *PL::Parsing::Tokens::compile(gpr_kit *gprk, parse_node *pn, int code_mode,
|
|||
} else {
|
||||
if (Node::is(spec, CONSTANT_NT)) {
|
||||
if ((K_understanding) && (Rvalues::is_CONSTANT_of_kind(spec, K_understanding))) {
|
||||
gv = Rvalues::to_grammar_verb(spec);
|
||||
gv = ARvalues::to_grammar_verb(spec);
|
||||
if (code_mode) {
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
|
|
|
@ -12,6 +12,7 @@ void ParsingPlugin::start(void) {
|
|||
|
||||
PluginManager::plug(PRODUCTION_LINE_PLUG, ParsingPlugin::production_line);
|
||||
PluginManager::plug(MAKE_SPECIAL_MEANINGS_PLUG, ParsingPlugin::make_special_meanings);
|
||||
PluginManager::plug(COMPARE_CONSTANT_PLUG, ParsingPlugin::compare_CONSTANT);
|
||||
PluginManager::plug(NEW_VARIABLE_NOTIFY_PLUG, ParsingPlugin::new_variable_notify);
|
||||
PluginManager::plug(NEW_SUBJECT_NOTIFY_PLUG, ParsingPlugin::new_subject_notify);
|
||||
PluginManager::plug(NEW_PERMISSION_NOTIFY_PLUG, Visibility::new_permission_notify);
|
||||
|
@ -56,6 +57,21 @@ int ParsingPlugin::new_subject_notify(inference_subject *subj) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
int ParsingPlugin::compare_CONSTANT(parse_node *spec1, parse_node *spec2, int *rv) {
|
||||
kind *K = Node::get_kind_of_value(spec1);
|
||||
if (Kinds::eq(K, K_understanding)) {
|
||||
if (ARvalues::to_grammar_verb(spec1) == ARvalues::to_grammar_verb(spec2)) {
|
||||
*rv = TRUE;
|
||||
}
|
||||
*rv = FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ A number of global variables are given special treatment here, including
|
||||
a whole family with names like "the K understood", for different kinds K.
|
||||
This is an awkward contrivance to bridge Inform 7, which is typed, with the
|
||||
|
|
|
@ -39,12 +39,15 @@ Chapter 4: Actions
|
|||
"Actions are impulses to do something within the simulated world."
|
||||
Actions Plugin
|
||||
Actions-Only Nodes and Annotations
|
||||
Action Kinds
|
||||
Action Conditions
|
||||
Actions
|
||||
Action Semantics
|
||||
Action Variables
|
||||
Action Name Names
|
||||
Action Name Lists
|
||||
Action Patterns
|
||||
Explicit Actions
|
||||
Action Pattern Clauses
|
||||
Going
|
||||
Parse Action Patterns
|
||||
|
|
|
@ -188,8 +188,9 @@ void Chronology::compile_past_tense_condition(value_holster *VH, parse_node *spe
|
|||
|
||||
#ifdef IF_MODULE
|
||||
action_pattern *ap = NULL;
|
||||
if (Node::is(spec, TEST_VALUE_NT)) ap = Rvalues::to_action_pattern(spec->down);
|
||||
if (AConditions::is_action_TEST_VALUE(spec)) ap = ActionPatterns::action_from_TEST(spec);
|
||||
if ((ap) && (tense != IS_TENSE)) {
|
||||
LOG("Here we go! $A\n", ap);
|
||||
if ((duration) && (Occurrence::units(duration) == TIMES_UNIT) && (Occurrence::length(duration) >= 2)) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_NoMoreRonNewcombMoment),
|
||||
"a condition like 'we have X', where X is an action, has either "
|
||||
|
|
|
@ -344,7 +344,7 @@ void Phrases::Parser::parse_within_inv(parse_node *inv) {
|
|||
|
||||
@<Parse the action in a try phrase@> =
|
||||
if (<action-pattern>(XW))
|
||||
as_parsed = Conditions::new_TEST_ACTION(<<rp>>, XW);
|
||||
as_parsed = AConditions::new_action_TEST_VALUE(<<rp>>, XW);
|
||||
else {
|
||||
permit_trying_omission = FALSE;
|
||||
@<Parse any other token@>;
|
||||
|
|
|
@ -356,9 +356,10 @@ void RTActionPatterns::emit_pattern_match(action_pattern ap, int naming_mode) {
|
|||
void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern ap, int naming_mode) {
|
||||
int cpm_count = 0, needed[MAX_CPM_CLAUSES];
|
||||
ap_clause *needed_apoc[MAX_CPM_CLAUSES];
|
||||
LOGIF(ACTION_PATTERN_COMPILATION, "Compiling action pattern:\n $A", &ap);
|
||||
LOGIF(ACTION_PATTERN_COMPILATION, "Compiling action pattern:\n $A\n", &ap);
|
||||
|
||||
if (ap.duration) {
|
||||
LOGIF(ACTION_PATTERN_COMPILATION, "As past action\n");
|
||||
Chronology::compile_past_action_pattern(VH, ap.duration, ap);
|
||||
} else {
|
||||
kind *kind_of_noun = K_object;
|
||||
|
|
|
@ -350,7 +350,7 @@ int RTActions::actions_compile_constant(value_holster *VH, kind *K, parse_node *
|
|||
if (PluginManager::active(actions_plugin) == FALSE)
|
||||
internal_error("actions plugin inactive");
|
||||
if (Kinds::eq(K, K_action_name)) {
|
||||
action_name *an = Rvalues::to_action_name(spec);
|
||||
action_name *an = ARvalues::to_action_name(spec);
|
||||
if (Holsters::data_acceptable(VH)) {
|
||||
inter_name *N = RTActions::iname(an);
|
||||
if (N) Emit::holster(VH, N);
|
||||
|
|
|
@ -101,44 +101,6 @@ parse_node *Conditions::new_TEST_PHRASE_OPTION(int opt_num) {
|
|||
return spec;
|
||||
}
|
||||
|
||||
@ =
|
||||
#ifdef IF_MODULE
|
||||
parse_node *Conditions::new_TEST_ACTION(action_pattern *ap, wording W) {
|
||||
if (ap == NULL) internal_error("null action pattern");
|
||||
parse_node *spec = Node::new_with_words(TEST_VALUE_NT, W);
|
||||
spec->down = Rvalues::from_action_pattern(ap);
|
||||
Node::set_text(spec->down, W);
|
||||
return spec;
|
||||
}
|
||||
#endif
|
||||
#ifndef IF_MODULE
|
||||
parse_node *Conditions::new_TEST_ACTION(void *ap, wording W) {
|
||||
internal_error("can't make test action without IF module");
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
int Conditions::is_TEST_ACTION(parse_node *spec) {
|
||||
#ifdef IF_MODULE
|
||||
if ((Node::is(spec, TEST_VALUE_NT)) &&
|
||||
((Rvalues::to_action_pattern(spec->down)) ||
|
||||
(Rvalues::to_explicit_action(spec->down)))) return TRUE;
|
||||
#endif
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
parse_node *Conditions::action_tested(parse_node *spec) {
|
||||
#ifdef IF_MODULE
|
||||
if (Conditions::is_TEST_ACTION(spec) == FALSE)
|
||||
internal_error("action improperly extracted");
|
||||
return spec->down;
|
||||
#endif
|
||||
#ifndef IF_MODULE
|
||||
internal_error("can't perform action_tested without IF module");
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ Since, in principle, any condition might also have a time period attached
|
||||
to it, we need a follow-up routine to attach this as necessary to a newly
|
||||
created condition:
|
||||
|
@ -264,10 +226,15 @@ void Conditions::compile(value_holster *VH, parse_node *spec_found) {
|
|||
case LOGICAL_NOT_NT: @<Compile a logical negation@>; break;
|
||||
case LOGICAL_AND_NT: case LOGICAL_OR_NT: @<Compile a logical operator@>; break;
|
||||
case TEST_VALUE_NT: {
|
||||
if (Conditions::is_TEST_ACTION(spec_found)) {
|
||||
if (AConditions::is_action_TEST_VALUE(spec_found)) {
|
||||
#ifdef IF_MODULE
|
||||
action_pattern *ap = Rvalues::to_action_pattern(
|
||||
Conditions::action_tested(spec_found));
|
||||
action_pattern *ap = ARvalues::to_action_pattern(
|
||||
AConditions::action_tested(spec_found));
|
||||
if (ap == NULL) {
|
||||
explicit_action *ea = Node::get_constant_explicit_action(AConditions::action_tested(spec_found));
|
||||
if (ea) ap = ea->as_described;
|
||||
}
|
||||
if (ap == NULL) internal_error("no action pattern to test");
|
||||
RTActionPatterns::compile_pattern_match(VH, *ap, FALSE);
|
||||
#endif
|
||||
} else if (Specifications::is_description(spec_found)) {
|
||||
|
|
|
@ -2916,17 +2916,15 @@ action value, which is a specific action.
|
|||
|
||||
@<Step (5.d.1) Coerce TEST ACTION to constant action@> =
|
||||
LOG_DASH("(5.d.1)");
|
||||
LOGIF(MATCHING, "Kind expected %u; ista %d cond %d\n", kind_expected, Conditions::is_TEST_ACTION(p), condition_context);
|
||||
if ((Conditions::is_TEST_ACTION(p)) && (kind_expected) &&
|
||||
if ((AConditions::is_action_TEST_VALUE(p)) && (kind_expected) &&
|
||||
(Kinds::compatible(K_stored_action, kind_expected))) {
|
||||
LOGIF(MATCHING, "Madeit\n");
|
||||
explicit_action *ea = Node::get_constant_explicit_action(p->down);
|
||||
if (ea == NULL) {
|
||||
action_pattern *ap = Node::get_constant_action_pattern(p->down);
|
||||
int failure_code = 0;
|
||||
ea = ActionPatterns::to_explicit_action(ap, &failure_code);
|
||||
ea = ExplicitActions::from_action_pattern(ap, &failure_code);
|
||||
|
||||
if (failure_code == 1) {
|
||||
if (failure_code == UNDERSPECIFIC_EA_FAILURE) {
|
||||
THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM;
|
||||
Problems::quote_source(1, current_sentence);
|
||||
Problems::quote_wording(2, Node::get_text(p));
|
||||
|
@ -2939,7 +2937,7 @@ LOGIF(MATCHING, "Madeit\n");
|
|||
Problems::issue_problem_end();
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
if (failure_code == 2) {
|
||||
if (failure_code == OVERSPECIFIC_EA_FAILURE) {
|
||||
THIS_IS_A_GROSSER_THAN_GROSS_PROBLEM;
|
||||
Problems::quote_source(1, current_sentence);
|
||||
Problems::quote_wording(2, Node::get_text(p));
|
||||
|
|
|
@ -29,29 +29,6 @@ pointers:
|
|||
return spec;
|
||||
|
||||
=
|
||||
#ifdef IF_MODULE
|
||||
parse_node *Rvalues::from_action_name(action_name *val) {
|
||||
CONV_FROM(action_name, K_action_name) }
|
||||
parse_node *Rvalues::from_action_pattern(action_pattern *val) {
|
||||
int failure_code = 0;
|
||||
explicit_action *ea = ActionPatterns::to_explicit_action(val, &failure_code);
|
||||
if (ea) {
|
||||
parse_node *spec = Node::new(CONSTANT_NT);
|
||||
Node::set_kind_of_value(spec, K_stored_action);
|
||||
Node::set_constant_action_pattern(spec, val);
|
||||
Node::set_constant_explicit_action(spec, ea);
|
||||
return spec;
|
||||
} else {
|
||||
CONV_FROM(action_pattern, K_description_of_action);
|
||||
}
|
||||
}
|
||||
parse_node *Rvalues::from_grammar_verb(grammar_verb *val) {
|
||||
CONV_FROM(grammar_verb, K_understanding) }
|
||||
parse_node *Rvalues::from_named_action_pattern(named_action_pattern *val) {
|
||||
CONV_FROM(named_action_pattern, K_nil) }
|
||||
parse_node *Rvalues::from_scene(scene *val) {
|
||||
CONV_FROM(scene, K_scene) }
|
||||
#endif
|
||||
parse_node *Rvalues::from_activity(activity *val) {
|
||||
CONV_FROM(activity, Activities::to_kind(val)) }
|
||||
parse_node *Rvalues::from_binary_predicate(binary_predicate *val) {
|
||||
|
@ -85,20 +62,6 @@ parse_node *Rvalues::from_verb_form(verb_form *val) {
|
|||
return val;
|
||||
|
||||
=
|
||||
#ifdef IF_MODULE
|
||||
action_name *Rvalues::to_action_name(parse_node *spec) {
|
||||
CONV_TO(action_name) }
|
||||
action_pattern *Rvalues::to_action_pattern(parse_node *spec) {
|
||||
CONV_TO(action_pattern) }
|
||||
explicit_action *Rvalues::to_explicit_action(parse_node *spec) {
|
||||
CONV_TO(explicit_action) }
|
||||
grammar_verb *Rvalues::to_grammar_verb(parse_node *spec) {
|
||||
CONV_TO(grammar_verb) }
|
||||
named_action_pattern *Rvalues::to_named_action_pattern(parse_node *spec) {
|
||||
CONV_TO(named_action_pattern) }
|
||||
scene *Rvalues::to_scene(parse_node *spec) {
|
||||
CONV_TO(scene) }
|
||||
#endif
|
||||
activity *Rvalues::to_activity(parse_node *spec) {
|
||||
CONV_TO(activity) }
|
||||
binary_predicate *Rvalues::to_binary_predicate(parse_node *spec) {
|
||||
|
@ -471,11 +434,9 @@ int Rvalues::compare_CONSTANT(parse_node *spec1, parse_node *spec2) {
|
|||
KCOMPARE_CONSTANTS(rulebook_outcome, named_rulebook_outcome)
|
||||
KCOMPARE_CONSTANTS(table, table)
|
||||
KCOMPARE_CONSTANTS(use_option, use_option)
|
||||
#ifdef IF_MODULE
|
||||
KCOMPARE_CONSTANTS(action_name, action_name)
|
||||
KCOMPARE_CONSTANTS(scene, scene)
|
||||
KCOMPARE_CONSTANTS(understanding, grammar_verb)
|
||||
#endif
|
||||
int rv = NOT_APPLICABLE;
|
||||
PluginCalls::compare_constant(spec1, spec2, &rv);
|
||||
if (rv != NOT_APPLICABLE) return rv;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
|
|
@ -141,7 +141,7 @@ kind *Lists::kind_of_ll(literal_list *ll, int issue_problems) {
|
|||
for (lle = ll->first_llist_entry; lle; lle = lle->next_llist_entry) {
|
||||
parse_node *spec = lle->llist_entry_value;
|
||||
if (!Node::is(spec, UNKNOWN_NT)) {
|
||||
if (Conditions::is_TEST_ACTION(spec))
|
||||
if (AConditions::is_action_TEST_VALUE(spec))
|
||||
Dash::check_value_silently(spec, K_stored_action);
|
||||
else
|
||||
Dash::check_value_silently(spec, NULL);
|
||||
|
|
|
@ -52,8 +52,8 @@ following implements this as a hand-coded nonterminal instead.
|
|||
parse_node *atomic_cnd = <<rp>>;
|
||||
parse_node *spec = atomic_cnd;
|
||||
if (Node::is(spec, CONSTANT_NT)) {
|
||||
action_pattern *ap = Rvalues::to_action_pattern(spec);
|
||||
spec = Conditions::new_TEST_ACTION(ap, W);
|
||||
action_pattern *ap = ARvalues::to_action_pattern(spec);
|
||||
spec = AConditions::new_action_TEST_VALUE(ap, W);
|
||||
}
|
||||
==> { -, Conditions::attach_historic_requirement(spec, tp) };
|
||||
return TRUE;
|
||||
|
@ -165,10 +165,10 @@ is handled. The following nonterminal exists to enter the AP to the meaning list
|
|||
|
||||
=
|
||||
<s-action-pattern-as-condition> ::=
|
||||
<we-are-action-pattern> ==> { -, Conditions::new_TEST_ACTION(RP[1], W) }
|
||||
<we-are-action-pattern> ==> { -, AConditions::new_action_TEST_VALUE(RP[1], W) }
|
||||
|
||||
<s-action-pattern-as-negated-condition> ::=
|
||||
<action-pattern-negated> ==> { -, Conditions::new_TEST_ACTION(RP[1], W) }
|
||||
<action-pattern-negated> ==> { -, AConditions::new_action_TEST_VALUE(RP[1], W) }
|
||||
|
||||
@ And similarly:
|
||||
|
||||
|
@ -190,7 +190,7 @@ is handled. The following nonterminal exists to enter the AP to the meaning list
|
|||
"too much information about past events.");
|
||||
return FALSE;
|
||||
}
|
||||
parse_node *C = Conditions::new_TEST_ACTION(ap, W);
|
||||
parse_node *C = AConditions::new_action_TEST_VALUE(ap, W);
|
||||
C = Conditions::attach_tense(C, HASBEEN_TENSE);
|
||||
==> { -, C };
|
||||
#endif
|
||||
|
|
|
@ -174,7 +174,7 @@ These are meaningful only for interactive fiction, and serve the "if" module:
|
|||
if (Rvalues::is_CONSTANT_of_kind(S, K_stored_action)) {
|
||||
==> { -, S };
|
||||
return TRUE;
|
||||
} else if (Conditions::is_TEST_ACTION(S)) {
|
||||
} else if (AConditions::is_action_TEST_VALUE(S)) {
|
||||
==> { -, S->down };
|
||||
return TRUE;
|
||||
} else {
|
||||
|
@ -199,7 +199,7 @@ These are meaningful only for interactive fiction, and serve the "if" module:
|
|||
if (Rvalues::is_CONSTANT_of_kind(S, K_stored_action)) {
|
||||
==> { -, S };
|
||||
return TRUE;
|
||||
} else if (Conditions::is_TEST_ACTION(S)) {
|
||||
} else if (AConditions::is_action_TEST_VALUE(S)) {
|
||||
==> { -, S->down };
|
||||
return TRUE;
|
||||
} else {
|
||||
|
|
|
@ -494,31 +494,3 @@ parse_node *SPType::arg(parse_node *val) {
|
|||
if (val == NULL) return Specifications::new_UNKNOWN(EMPTY_WORDING);
|
||||
return Node::duplicate(val);
|
||||
}
|
||||
|
||||
@ Action patterns, such as "taking a container" or "opening a closed door",
|
||||
are parsed by code in the chapter on Actions; all we do here is to wrap the
|
||||
result.
|
||||
|
||||
=
|
||||
<s-action-pattern-as-value> internal {
|
||||
#ifdef IF_MODULE
|
||||
if (Wordings::mismatched_brackets(W)) { ==> { fail nonterminal }; }
|
||||
if (Lexer::word(Wordings::first_wn(W)) == OPENBRACE_V) { ==> { fail nonterminal }; }
|
||||
int pto = permit_trying_omission;
|
||||
if (<definite-article>(Wordings::first_word(W)) == FALSE) permit_trying_omission = TRUE;
|
||||
int r = <action-pattern>(W);
|
||||
permit_trying_omission = pto;
|
||||
if (r) {
|
||||
action_pattern *ap = <<rp>>;
|
||||
if ((APClauses::get_val(ap, ACTOR_AP_CLAUSE)) &&
|
||||
(Dash::validate_parameter(APClauses::get_val(ap, ACTOR_AP_CLAUSE), K_person) == FALSE)) {
|
||||
r = <action-pattern>(W);
|
||||
}
|
||||
}
|
||||
if (r) {
|
||||
==> { -, Conditions::new_TEST_ACTION(<<rp>>, W) };
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
==> { fail nonterminal };
|
||||
}
|
||||
|
|
|
@ -959,9 +959,9 @@ pcalc_prop *Simplifications::convert_gerunds(pcalc_prop *prop, int *changed) {
|
|||
TRAVERSE_PROPOSITION(pl, prop)
|
||||
if ((pl->element == PREDICATE_ATOM) && (pl->arity == 2))
|
||||
for (int i=0; i<2; i++)
|
||||
if (Conditions::is_TEST_ACTION(pl->terms[i].constant))
|
||||
if (AConditions::is_action_TEST_VALUE(pl->terms[i].constant))
|
||||
pl->terms[i].constant =
|
||||
Conditions::action_tested(pl->terms[i].constant);
|
||||
AConditions::action_tested(pl->terms[i].constant);
|
||||
return prop;
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue