mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 08:34:22 +03:00
Completed work on the actions plugin
This commit is contained in:
parent
27da81f8f8
commit
a06bd0020b
|
@ -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#SP16">§16. Influencing values</a></li><li><a href="3-pc.html#SP21">§21. Influencing knowledge</a></li><li><a href="3-pc.html#SP34">§34. Influencing if</a></li><li><a href="3-pc.html#SP41">§41. 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#SP21">§21. Influencing knowledge</a></li><li><a href="3-pc.html#SP34">§34. Influencing the actions plugin</a></li><li><a href="3-pc.html#SP45">§45. 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
|
||||
|
@ -529,8 +529,12 @@ 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="SP34" class="paragraph-anchor"></a><b>§34. Influencing if. </b>If the actions plugin is not active, then the following will never be called.
|
||||
It warn plugins that a new action name has been created.
|
||||
<p class="commentary firstcommentary"><a id="SP34" class="paragraph-anchor"></a><b>§34. Influencing the actions plugin. </b>We now have a whole run of functions called only by the actions plugin, and
|
||||
therefore only when it is active.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Called from <a href="../if-module/4-ap.html" class="internal">Actions Plugin (in if)</a> to signal that a new action has been
|
||||
created. For example, the going plugin uses this to spot the arrival of "going".
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">NEW_ACTION_NOTIFY_PLUG</span>
|
||||
|
@ -540,9 +544,10 @@ It warn plugins that a new action name has been created.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_ACTION_NOTIFY_PLUG</span><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="SP35" class="paragraph-anchor"></a><b>§35. </b>If the actions plugin is not active, then the following will never be called.
|
||||
It invites plugins to change the action pattern clause ID associated with a
|
||||
given action variable.
|
||||
<p class="commentary firstcommentary"><a id="SP35" class="paragraph-anchor"></a><b>§35. </b>Called from <a href="../if-module/4-apc.html" class="internal">Action Pattern Clauses (in if)</a> to invite plugins to change the
|
||||
action pattern clause ID associated with a given action variable. This may be
|
||||
needed in order to cross-reference between multiple such clauses, as with
|
||||
the going action variables.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">DIVERT_AP_CLAUSE_PLUG</span>
|
||||
|
@ -553,9 +558,8 @@ given action variable.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">DIVERT_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">stv</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP36" class="paragraph-anchor"></a><b>§36. </b>If the actions plugin is not active, then the following will never be called.
|
||||
It should print a helpful name for the debugging log for the clause ID <span class="extract"><span class="extract-syntax">C</span></span>,
|
||||
if <span class="extract"><span class="extract-syntax">C</span></span> is a new clause ID created by the plugin.
|
||||
<p class="commentary firstcommentary"><a id="SP36" class="paragraph-anchor"></a><b>§36. </b>Called from <a href="../if-module/4-apc.html" class="internal">Action Pattern Clauses (in if)</a> to ask plugins to print a helpful
|
||||
name for the debugging log for any new clause ID <span class="extract"><span class="extract-syntax">C</span></span> which they have created.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">WRITE_AP_CLAUSE_ID_PLUG</span>
|
||||
|
@ -565,9 +569,9 @@ if <span class="extract"><span class="extract-syntax">C</span></span> is a new c
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">WRITE_AP_CLAUSE_ID_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP37" class="paragraph-anchor"></a><b>§37. </b>If the actions plugin is not active, then the following will never be called.
|
||||
It should return a <span class="extract"><span class="extract-syntax">*_APCA</span></span> aspect for the clause ID <span class="extract"><span class="extract-syntax">C</span></span>, if <span class="extract"><span class="extract-syntax">C</span></span> is a new
|
||||
clause ID created by the plugin.
|
||||
<p class="commentary firstcommentary"><a id="SP37" class="paragraph-anchor"></a><b>§37. </b>Called from <a href="../if-module/4-apc.html" class="internal">Action Pattern Clauses (in if)</a> to ask for the <span class="extract"><span class="extract-syntax">*_APCA</span></span> aspect
|
||||
for the clause ID <span class="extract"><span class="extract-syntax">C</span></span>, where <span class="extract"><span class="extract-syntax">C</span></span> is a new clause ID created by the plugin. If
|
||||
this is not given, then the aspect will be <span class="extract"><span class="extract-syntax">MISC_APCA</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">ASPECT_OF_AP_CLAUSE_ID_PLUG</span>
|
||||
|
@ -577,14 +581,22 @@ clause ID created by the plugin.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">ASPECT_OF_AP_CLAUSE_ID_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP38" class="paragraph-anchor"></a><b>§38. </b>If the actions plugin is not active, then the following will never be called.
|
||||
If it recognises the patterns as ways to describe an action it knows about,
|
||||
then the plugin can choose to take the decision, storing either 1 or -1 in
|
||||
<p class="commentary firstcommentary"><a id="SP38" class="paragraph-anchor"></a><b>§38. </b>Called from <a href="../if-module/4-apc.html" class="internal">Action Pattern Clauses (in if)</a> to give plugins a chance to
|
||||
decide which AP is more specific, on the basis of the extra clauses defined
|
||||
in the plugin.
|
||||
</p>
|
||||
|
||||
<p class="commentary">If the plugin recognises the patterns as ways to describe an action it knows
|
||||
about, it can choose to take the decision, storing either 1 or -1 in
|
||||
<span class="extract"><span class="extract-syntax">rv</span></span>, and returning <span class="extract"><span class="extract-syntax">TRUE</span></span>. If it instead stores 0 in <span class="extract"><span class="extract-syntax">rv</span></span>, it can also
|
||||
choose to set <span class="extract"><span class="extract-syntax">ignore_in</span></span>, which tells the usual machinery not to judge on the
|
||||
basis of the <span class="extract"><span class="extract-syntax">[in: ...]</span></span> clause in the pattern.
|
||||
</p>
|
||||
|
||||
<p class="commentary">If the plugin sees nothing relevant about the patterns, it should return <span class="extract"><span class="extract-syntax">FALSE</span></span>
|
||||
to let the usual machinery take its course.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">COMPARE_AP_SPECIFICITY_PLUG</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -593,16 +605,57 @@ basis of the <span class="extract"><span class="extract-syntax">[in: ...]</span>
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">COMPARE_AP_SPECIFICITY_PLUG</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">rv</span><span class="plain-syntax">, </span><span class="identifier-syntax">ignore_in</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP39" class="paragraph-anchor"></a><b>§39. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP39" class="paragraph-anchor"></a><b>§39. </b>Called from <a href="../if-module/4-apc.html" class="internal">Action Pattern Clauses (in if)</a> to notify plugins that a clause
|
||||
matching an action variable has just been added to an action pattern.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">NEW_AP_CLAUSE_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::new_AP_clause</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">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">PluginCalls::new_action_variable_clause</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">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="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP40" class="paragraph-anchor"></a><b>§40. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP40" class="paragraph-anchor"></a><b>§40. </b>Called from <a href="../if-module/4-pc.html" class="internal">Parse Clauses (in if)</a> to give plugins a chance to intervene in
|
||||
the normal process of evaluating the meaning of text in an action pattern
|
||||
clause: for example, in parsing "going nowhere", the going plugin uses this
|
||||
to detect that the <span class="extract"><span class="extract-syntax">NOUN_AP_CLAUSE</span></span>, with text "nowhere", should not be parsed
|
||||
normally. What it does it to set a bit in the bitmap <span class="extract"><span class="extract-syntax">bits</span></span>, which it will pick
|
||||
up again and act upon when reacting to <span class="extract"><span class="extract-syntax">ACT_ON_ANL_ENTRY_OPTIONS_PLUG</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">If the plugin does not set a bit in <span class="extract"><span class="extract-syntax">bits</span></span>, the normal machinery parses the
|
||||
text of the clause in the normal way.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">PARSE_AP_CLAUSE_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::parse_AP_clause</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">anl_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bits</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">PARSE_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="identifier-syntax">bits</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP41" class="paragraph-anchor"></a><b>§41. </b>Called from <a href="../if-module/4-pc.html" class="internal">Parse Clauses (in if)</a> to give plugins a chance to intervene in
|
||||
the type-checking process for a clause. Ordinarily, this would just check that
|
||||
the contents have the right kind: if matching an action variable of kind <span class="extract"><span class="extract-syntax">K</span></span>
|
||||
then it must be a value compatible with <span class="extract"><span class="extract-syntax">K</span></span> or a description of such.
|
||||
</p>
|
||||
|
||||
<p class="commentary">By returning <span class="extract"><span class="extract-syntax">TRUE</span></span>, a plugin can instead take responsibility for the decision
|
||||
itself, bypassing that. The <span class="extract"><span class="extract-syntax">outcome</span></span> should then be set <span class="extract"><span class="extract-syntax">TRUE</span></span> (it's valid)
|
||||
or <span class="extract"><span class="extract-syntax">FALSE</span></span> (it isn't).
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">VALIDATE_AP_CLAUSE_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::validate_AP_clause</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">anl_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">outcome</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">VALIDATE_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="identifier-syntax">outcome</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP42" class="paragraph-anchor"></a><b>§42. </b>Called from <a href="../if-module/4-pc.html" class="internal">Parse Clauses (in if)</a> to deal with the options bitmap set
|
||||
previously by a <span class="extract"><span class="extract-syntax">PARSE_AP_CLAUSE_PLUG</span></span> call: see above.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">ACT_ON_ANL_ENTRY_OPTIONS_PLUG</span>
|
||||
</pre>
|
||||
|
@ -611,7 +664,32 @@ basis of the <span class="extract"><span class="extract-syntax">[in: ...]</span>
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">ACT_ON_ANL_ENTRY_OPTIONS_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry_options</span><span class="plain-syntax">, </span><span class="identifier-syntax">fail</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP41" class="paragraph-anchor"></a><b>§41. 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="SP43" class="paragraph-anchor"></a><b>§43. </b>Called from <a href="../runtime-module/5-ap.html" class="internal">Action Patterns (in runtime)</a> when assembling the requirement
|
||||
clauses for compiling a mattern match; this gives plugins a chance to act
|
||||
extra stipulations, which are not explicit in clauses already in the pattern.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">SET_PATTERN_MATCH_REQUIREMENTS_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::set_pattern_match_requirements</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">cpm</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">needed</span><span class="plain-syntax">[</span><span class="identifier-syntax">MAX_CPM_CLAUSES</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="identifier-syntax">MAX_CPM_CLAUSES</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">SET_PATTERN_MATCH_REQUIREMENTS_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">cpm</span><span class="plain-syntax">, </span><span class="identifier-syntax">needed</span><span class="plain-syntax">, </span><span class="identifier-syntax">needed_apoc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP44" class="paragraph-anchor"></a><b>§44. </b>Called from <a href="../runtime-module/5-ap.html" class="internal">Action Patterns (in runtime)</a> when compiling any additional
|
||||
requirements set by <span class="extract"><span class="extract-syntax">SET_PATTERN_MATCH_REQUIREMENTS_PLUG</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">COMPILE_PATTERN_MATCH_CLAUSE_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::compile_pattern_match_clause</span><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="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cpmc</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">COMPILE_PATTERN_MATCH_CLAUSE_PLUG</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">cpmc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP45" class="paragraph-anchor"></a><b>§45. 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>
|
||||
|
@ -623,7 +701,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="SP42" class="paragraph-anchor"></a><b>§42. </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="SP46" class="paragraph-anchor"></a><b>§46. </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>
|
||||
|
|
|
@ -190,7 +190,7 @@ nothing except to be a parent to them; it has no activation function.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">times_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">TimesOfDay::start</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"times of day"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">actions_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="4-ap.html#SP1" class="function-link"><span class="function-syntax">ActionsPlugin::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"actions"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">going_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="4-gng.html#SP1" class="function-link"><span class="function-syntax">Going::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"going"</span><span class="plain-syntax">, </span><span class="identifier-syntax">actions_plugin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">going_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="4-gng.html#SP1" class="function-link"><span class="function-syntax">GoingPlugin::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"going"</span><span class="plain-syntax">, </span><span class="identifier-syntax">actions_plugin</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parsing_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="5-pp.html#SP1" class="function-link"><span class="function-syntax">ParsingPlugin::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"command"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">showme_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><span class="identifier-syntax">RTShowmeCommand::start</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"showme"</span><span class="plain-syntax">, </span><span class="identifier-syntax">parsing_plugin</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -80,10 +80,10 @@ a test of what the current action is.
|
|||
<p class="commentary">This is represented in the parse tree as the twig:
|
||||
</p>
|
||||
|
||||
<p class="commentary"> TEST_VALUE_NT
|
||||
CONSTANT_NT
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> TEST_VALUE_NT</span>
|
||||
<span class="plain-syntax"> CONSTANT_NT</span>
|
||||
</pre>
|
||||
<p class="commentary">where the constant below is the action seen as a noun — linguistically, a
|
||||
"gerund". It will always have the kind <span class="extract"><span class="extract-syntax">K_stored_action</span></span> or <span class="extract"><span class="extract-syntax">K_description_of_action</span></span>,
|
||||
depending on whether the test is against an explicit action or something vaguer.
|
||||
|
@ -96,7 +96,7 @@ depending on whether the test is against an explicit action or something vaguer.
|
|||
<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#SP6">§6</a>, <a href="4-pap.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="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">spec</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax"> = </span><a href="4-ak.html#SP5" 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>
|
||||
|
@ -117,8 +117,8 @@ depending on whether the test is against an explicit action or something vaguer.
|
|||
|
||||
<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('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">AConditions::is_action_TEST_VALUE</span></span>:<br/><a href="4-ac.html#SP2">§2</a>, <a href="4-ac.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="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><a href="4-ak.html#SP5" 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#SP5" 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>
|
||||
</pre>
|
||||
|
@ -136,7 +136,7 @@ reconstruct the original action pattern which led to this condition:
|
|||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">AConditions::pattern_from_action_TEST_VALUE</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">AConditions::pattern_from_action_TEST_VALUE</span></span>:<br/><a href="4-ac.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="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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gerund</span><span class="plain-syntax"> = </span><a href="4-ac.html#SP2" class="function-link"><span class="function-syntax">AConditions::gerund_from_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="identifier-syntax">gerund</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#SP5" class="function-link"><span class="function-syntax">ARvalues::to_action_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gerund</span><span 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><span class="identifier-syntax">gerund</span><span 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>
|
||||
|
@ -160,7 +160,7 @@ reconstruct the original action pattern which led to this condition:
|
|||
<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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -213,7 +213,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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -85,8 +85,6 @@ actions respectively: see <a href="4-ap.html" class="internal">Actions Plugin</a
|
|||
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>
|
||||
|
@ -101,7 +99,7 @@ recognised by their Inter identifiers:
|
|||
<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 class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>A stored action can always be compared to a gerund: for instance,
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
|
@ -115,17 +113,17 @@ recognised by their Inter identifiers:
|
|||
<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
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </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="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#SP7">§7</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
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </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
|
||||
|
@ -156,7 +154,7 @@ or "taking the golden telephone in the presence of Mr Wu" would all be
|
|||
<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
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </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
|
||||
|
@ -169,7 +167,7 @@ they were used as values, this is the kind we would probably give them.
|
|||
<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>
|
||||
</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
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </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>
|
||||
|
@ -178,7 +176,7 @@ but in practice there seems little need, so for the moment we do not.
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ARvalues::compare_CONSTANT</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::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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ak.html#SP4" 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#SP4" 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>
|
||||
|
@ -188,7 +186,7 @@ but in practice there seems little need, so for the moment we do not.
|
|||
<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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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>
|
||||
<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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -275,7 +275,7 @@ so that it can indeed be used as a value.
|
|||
<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="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#SP5" 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>
|
||||
|
@ -286,7 +286,7 @@ so that it can indeed be used as a value.
|
|||
<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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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>
|
||||
<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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -453,7 +453,7 @@ in the final AP.
|
|||
<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">evaluation</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">anl_clause</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure anl_clause is accessed in 4/apc, 4/gng, 4/pc and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure anl_clause is accessed in 4/apc, 4/pc, 4/gng and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>And this is convenient for looking through them:
|
||||
</p>
|
||||
|
||||
|
@ -703,14 +703,18 @@ is no best action. (For example, in "throwing or removing something".)
|
|||
<span class="plain-syntax"> </span><a href="4-anl.html#SP26" class="function-link"><span class="function-syntax">ActionNameLists::log_entry_briefly</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ANL_CLAUSES</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_text</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" ["</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP1" class="function-link"><span class="function-syntax">APClauses::write_clause_ID</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">": %W]"</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">); </span><a href="4-anl.html#SP26" class="function-link"><span class="function-syntax">ActionNameLists::log_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_briefly</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::log_briefly</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_clause</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::log_clause</span></span>:<br/>Parse Clauses - <a href="4-pc.html#SP1_1_1">§1.1.1</a>, <a href="4-pc.html#SP1_1_3">§1.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"["</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP1" class="function-link"><span class="function-syntax">APClauses::write_clause_ID</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">": %W]"</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_briefly</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log_briefly</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-anl>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -754,7 +758,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('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parse</span></span>:<br/><a href="4-anl.html#SP41">§41</a><br/>Parse Action Patterns - <a href="4-pap.html#SP16">§16</a><br/>Parse Clauses - <a href="4-pc.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="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('usagePopup40')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup40">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::parse</span></span>:<br/><a href="4-anl.html#SP41">§41</a><br/>Parse Action Patterns - <a href="4-pap.html#SP16">§16</a><br/>Parse Clauses - <a href="4-pc.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="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>
|
||||
|
@ -863,10 +867,10 @@ something other than something — or <span class="extract"><span class="ext
|
|||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><anl-entry></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><named-action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { -, ActionNameLists::nap_entry(RP[1], W, EMPTY_WORDING) }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><named-action-pattern-with-tail></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><named-action-pattern-tailed></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"> { pass 1 }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><anl-entry-with-action></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { pass 1 }</span>
|
||||
|
||||
<span class="Preform-function-syntax"><named-action-pattern-with-tail></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">internal</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{</span>
|
||||
<span class="Preform-function-syntax"><named-action-pattern-tailed></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">for</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">i</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">i</span><span class="Preform-plain-syntax"><= </span><span class="Preform-identifier-syntax">Wordings::last_wn</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">) - </span><span class="Preform-constant-syntax">1</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">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-function-syntax"><named-action-pattern></span><span class="Preform-plain-syntax">(</span><span class="Preform-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">))) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="4-anl.html#SP32" class="function-link"><span class="Preform-function-syntax">ActionNameLists::nap_entry</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-identifier-syntax">Wordings::from</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>
|
||||
|
@ -887,7 +891,7 @@ or "irreverent behaviour [in-presence: the Bishop]".
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::nap_entry</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">ActionNameLists::nap_entry</span></span>:<br/><a href="4-anl.html#SP31">§31</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nap</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">TW</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::nap_entry</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">ActionNameLists::nap_entry</span></span>:<br/><a href="4-anl.html#SP31">§31</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nap</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">TW</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP4" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">nap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">))</span>
|
||||
|
@ -927,7 +931,6 @@ in the Laboratory", we get the following set of <span class="extract"><span clas
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Parsing ANL from %W (tense %d)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">trial_entry</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP4" class="function-link"><span class="function-syntax">ActionNameLists::new_entry_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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>
|
||||
|
@ -939,7 +942,6 @@ in the Laboratory", we get the following set of <span class="extract"><span clas
|
|||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-anl.html#SP33_1_4" class="named-paragraph-link"><span class="named-paragraph">Include the trial entry</span><span class="named-paragraph-number">33.1.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NoMatch:</span><span class="plain-syntax"> ;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Parsing ANL from %W resulted in:\n$8\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">results</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP33">§33</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP33_1_1" class="paragraph-anchor"></a><b>§33.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ready the trial entry for another test</span><span class="named-paragraph-number">33.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -1068,7 +1070,7 @@ sub-clauses. For example, our unramified set of results
|
|||
</pre>
|
||||
<p class="commentary">Note that the <span class="extract"><span class="extract-syntax">TAIL_AP_CLAUSE</span></span> clauses, which were just temporary holders
|
||||
for leftover text, have gone entirely. Had it been impossible to break them
|
||||
into legal subclauses, they would have caused the result to be struct out
|
||||
into legal subclauses, they would have caused the result to be struck out
|
||||
altogether. For example, this:
|
||||
</p>
|
||||
|
||||
|
@ -1092,7 +1094,7 @@ still has a <span class="extract"><span class="extract-syntax">TAIL_AP_CLAUSE</s
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::ramify</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">ActionNameLists::ramify</span></span>:<br/><a href="4-anl.html#SP29_1">§29.1</a>, <a href="4-anl.html#SP29_3">§29.3</a>, <a href="4-anl.html#SP29_6">§29.6</a>, <a href="4-anl.html#SP32">§32</a>, <a href="4-anl.html#SP33">§33</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">results</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::ramify</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">ActionNameLists::ramify</span></span>:<br/><a href="4-anl.html#SP29_1">§29.1</a>, <a href="4-anl.html#SP29_3">§29.3</a>, <a href="4-anl.html#SP29_6">§29.6</a>, <a href="4-anl.html#SP32">§32</a>, <a href="4-anl.html#SP33">§33</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">results</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">results</span><span class="plain-syntax">; </span><span class="identifier-syntax">entry</span><span class="plain-syntax">; ) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="identifier-syntax">next_entry</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anl.html#SP35" class="function-link"><span class="function-syntax">ActionNameLists::explode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
||||
|
@ -1113,7 +1115,7 @@ actually is:
|
|||
</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::explode</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">ActionNameLists::explode</span></span>:<br/><a href="4-anl.html#SP34">§34</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::explode</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">ActionNameLists::explode</span></span>:<br/><a href="4-anl.html#SP34">§34</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tc</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP16" class="function-link"><span class="function-syntax">ActionNameLists::has_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">TAIL_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">tc</span><span class="plain-syntax"> = </span><span class="constant-syntax">TAIL_AP_CLAUSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP16" class="function-link"><span class="function-syntax">ActionNameLists::has_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">tc</span><span class="plain-syntax"> = </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -1136,7 +1138,7 @@ maybe it's just "banjo" and there is then a second clause "in the Conservatoire"
|
|||
<span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">currently_exploding_entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">currently_exploding_clause</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">explosions_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">ActionNameLists::explode_clause</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">ActionNameLists::explode_clause</span></span>:<br/><a href="4-anl.html#SP35">§35</a>, <a href="4-anl.html#SP40">§40</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">tc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from_wn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::explode_clause</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">ActionNameLists::explode_clause</span></span>:<br/><a href="4-anl.html#SP35">§35</a>, <a href="4-anl.html#SP40">§40</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">tc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from_wn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">saved</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_exploding_entry</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">saved_C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_exploding_clause</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">currently_exploding_entry</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
|
||||
|
@ -1249,12 +1251,13 @@ clause twice, and also means that pathological text like "in in in in in
|
|||
in in in in in in in in in in in in in in in in in in in in in in in in in"
|
||||
cannot cause a combinatorial nightmare; because each clause appears at
|
||||
most once in any entry, the number of entries produced by ramification is
|
||||
capped at \(2^n\), where \(n\) is the number of clauses whose matching words
|
||||
appear somewhere in the text.
|
||||
capped at \(2^n\), where \(n\) is the number of different clauses whose matching
|
||||
words appear somewhere in the text. As Inform ships with only seven different
|
||||
clauses anyway, this will never be too bad.
|
||||
</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::detonate</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">ActionNameLists::detonate</span></span>:<br/><a href="4-anl.html#SP38_1">§38.1</a>, <a href="4-anl.html#SP38_2">§38.2</a>, <a href="4-anl.html#SP39">§39</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">potential_C</span><span class="plain-syntax">, </span><span class="identifier-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</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">ActionNameLists::detonate</span><button class="popup" onclick="togglePopup('usagePopup45')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup45">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::detonate</span></span>:<br/><a href="4-anl.html#SP38_1">§38.1</a>, <a href="4-anl.html#SP38_2">§38.2</a>, <a href="4-anl.html#SP39">§39</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">potential_C</span><span class="plain-syntax">, </span><span class="identifier-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</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><a href="4-anl.html#SP16" class="function-link"><span class="function-syntax">ActionNameLists::has_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">currently_exploding_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">potential_C</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">extra</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP25" class="function-link"><span class="function-syntax">ActionNameLists::duplicate_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">currently_exploding_entry</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
@ -1284,7 +1287,7 @@ is otherwise never called.
|
|||
<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-ap2.html">ap2</a></li><li class="progresscurrent">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-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-ap2.html">ap2</a></li><li class="progresscurrent">anl</li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -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><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">MISCELLANEOUS_MC</span><span class="plain-syntax">, </span><a href="4-ak.html#SP4" 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>
|
||||
|
@ -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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -97,23 +97,23 @@ something". Action patterns become values of the kind <span class="extract"><spa
|
|||
They can also be aggregated into "named action patterns", which characterise
|
||||
behaviour; see <a href="4-ap2.html#SP3" 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.
|
||||
description of an action which may 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#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">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="4-ak.html#SP2" 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#SP7" 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">COMPILE_CONDITION_PLUG</span><span class="plain-syntax">, </span><a href="4-ac.html#SP3" class="function-link"><span class="function-syntax">AConditions::compile_condition</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">CREATION_PLUG</span><span class="plain-syntax">, </span><a href="4-anaa.html#SP7" 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#SP8" 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#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">TYPECHECK_EQUALITY_PLUG</span><span class="plain-syntax">, </span><a href="4-ak.html#SP3" 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>
|
||||
|
@ -144,7 +144,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="SP3" class="paragraph-anchor"></a><b>§3. </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>This is recognised by its English name when defined by the Standard Rules.
|
||||
(So there is no need to translate this to other languages.)
|
||||
</p>
|
||||
|
||||
|
@ -179,7 +179,7 @@ a "specification" text as one, and have to make their own arrangements:
|
|||
<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><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><a href="4-ak.html#SP4" 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>
|
||||
|
@ -487,7 +487,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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -316,7 +316,7 @@ decisive factor.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<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-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">ap2</li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-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">ap2</li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -153,7 +153,7 @@ action variable clauses.
|
|||
<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/anl, 4/gng, 4/pc, 4/ea, 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/anl, 4/pc, 4/ea, 4/gng, 5/tfg, 5/gl and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>This loop conveniently runs through the clauses for <span class="extract"><span class="extract-syntax">ap</span></span>:
|
||||
</p>
|
||||
|
||||
|
@ -220,12 +220,12 @@ almost, because there could also be options set on it.
|
|||
</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">APClauses::spec</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::spec</span></span>:<br/><a href="4-apc.html#SP18">§18</a><br/>Action Patterns - <a href="4-ap2.html#SP10">§10</a><br/>Going - <a href="4-gng.html#SP8">§8</a>, <a href="4-gng.html#SP9">§9</a>, <a href="4-gng.html#SP15">§15</a>, <a href="4-gng.html#SP16">§16</a><br/>Parse Action Patterns - <a href="4-pap.html#SP6">§6</a><br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a>, <a href="4-ea.html#SP3">§3</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::spec</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::spec</span></span>:<br/><a href="4-apc.html#SP18">§18</a><br/>Action Patterns - <a href="4-ap2.html#SP10">§10</a><br/>Parse Action Patterns - <a href="4-pap.html#SP6">§6</a><br/>Explicit Actions - <a href="4-ea.html#SP2">§2</a>, <a href="4-ea.html#SP3">§3</a><br/>Named Action Patterns - <a href="4-nap.html#SP2">§2</a><br/>Going - <a href="4-gng.html#SP8">§8</a>, <a href="4-gng.html#SP9">§9</a>, <a href="4-gng.html#SP15">§15</a>, <a href="4-gng.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="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#SP5" 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_spec</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::set_spec</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§6</a><br/>Going - <a href="4-gng.html#SP8">§8</a>, <a href="4-gng.html#SP9">§9</a><br/>Parse Action Patterns - <a href="4-pap.html#SP8_1">§8.1</a>, <a href="4-pap.html#SP8_2">§8.2</a>, <a href="4-pap.html#SP14">§14</a><br/>Parse Clauses - <a href="4-pc.html#SP1_4">§1.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">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_spec</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::set_spec</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP8_1">§8.1</a>, <a href="4-pap.html#SP8_2">§8.2</a>, <a href="4-pap.html#SP14_1">§14.1</a><br/>Parse Clauses - <a href="4-pc.html#SP1_4">§1.4</a><br/>Going - <a href="4-gng.html#SP8">§8</a>, <a href="4-gng.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">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#SP5" 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>
|
||||
|
@ -355,7 +355,7 @@ variables:
|
|||
<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#SP5" class="function-link"><span class="function-syntax">APClauses::ensure_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">stv_to_match</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stv</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::new_AP_clause</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::new_action_variable_clause</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::advance_to_next_av_clause</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>
|
||||
|
@ -529,7 +529,7 @@ sorting.
|
|||
<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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresscurrent">apc</li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -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 Clauses - <a href="4-pc.html#SP1_1_2">§1.1.2</a>, <a href="4-pc.html#SP1_3">§1.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">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 Clauses - <a href="4-pc.html#SP1_1_3">§1.1.3</a>, <a href="4-pc.html#SP1_3">§1.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">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 Clauses - <a href="4-pc.html#SP1_1_1">§1.1.1</a>, <a href="4-pc.html#SP1_1_2">§1.1.2</a>, <a href="4-pc.html#SP1_3">§1.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">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 Clauses - <a href="4-pc.html#SP1_1_1">§1.1.1</a>, <a href="4-pc.html#SP1_1_3">§1.1.3</a>, <a href="4-pc.html#SP1_3">§1.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">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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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><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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-ak.html#SP4" 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>
|
||||
|
@ -302,7 +302,7 @@ action patterns. For example, the Standard Rules define:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-as.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -97,7 +97,7 @@ position of being neither too specific, nor too unspecific:
|
|||
<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="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#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">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#SP3" 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#SP4" 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>
|
||||
|
@ -155,7 +155,7 @@ action (example: "taking") or it does specify them, but too vaguely (example:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pc.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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresscurrent">ea</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-pc.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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresscurrent">ea</li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -76,19 +76,29 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The "going" action, allowing actors to move from room to room in the spatial
|
||||
map of the world model, is by far the most intricately implemented. Reflecting
|
||||
that, we provide quite a lot of hard-wired compiler support for it, in the form
|
||||
of a plugin. If the actions plugin is not also active, none of the functions
|
||||
below will ever be called, whether or not going is active.
|
||||
of this plugin.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Note that if the actions plugin is not also active, none of the functions
|
||||
below will ever be called.
|
||||
</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">Going::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">Going::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><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_ACTION_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::new_action_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">WRITE_AP_CLAUSE_ID_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP5" class="function-link"><span class="function-syntax">Going::write_clause_ID</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">ASPECT_OF_AP_CLAUSE_ID_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP5" class="function-link"><span class="function-syntax">Going::aspect</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">DIVERT_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP6" class="function-link"><span class="function-syntax">Going::divert_clause_ID</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_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP7" class="function-link"><span class="function-syntax">Going::new_clause</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">ACT_ON_ANL_ENTRY_OPTIONS_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP12" class="function-link"><span class="function-syntax">Going::act_on_options</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_AP_SPECIFICITY_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP16" class="function-link"><span class="function-syntax">Going::compare_specificity</span></a><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::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">GoingPlugin::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><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_ACTION_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">GoingPlugin::new_action_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">WRITE_AP_CLAUSE_ID_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP5" class="function-link"><span class="function-syntax">GoingPlugin::write_clause_ID</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">ASPECT_OF_AP_CLAUSE_ID_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP5" class="function-link"><span class="function-syntax">GoingPlugin::aspect</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">DIVERT_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP6" class="function-link"><span class="function-syntax">GoingPlugin::divert_clause_ID</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">PARSE_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP11" class="function-link"><span class="function-syntax">GoingPlugin::parse_clause</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">VALIDATE_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP13" class="function-link"><span class="function-syntax">GoingPlugin::validate</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_AP_CLAUSE_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP7" class="function-link"><span class="function-syntax">GoingPlugin::new_clause</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">ACT_ON_ANL_ENTRY_OPTIONS_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP12" class="function-link"><span class="function-syntax">GoingPlugin::act_on_options</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_AP_SPECIFICITY_PLUG</span><span class="plain-syntax">, </span><a href="4-gng.html#SP16" class="function-link"><span class="function-syntax">GoingPlugin::compare_specificity</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">SET_PATTERN_MATCH_REQUIREMENTS_PLUG</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTGoing::set_pattern_match_requirements</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">COMPILE_PATTERN_MATCH_CLAUSE_PLUG</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTGoing::compile_pattern_match_clause</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>Firstly, we have to recognise the action we will treat differently, which
|
||||
|
@ -104,7 +114,7 @@ we do by its (English) name in the Standard Rules:
|
|||
|
||||
<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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::new_action_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">Going::new_action_notify</span></span>:<br/><a href="4-gng.html#SP1">§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">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::new_action_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">GoingPlugin::new_action_notify</span></span>:<br/><a href="4-gng.html#SP1">§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="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><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>
|
||||
|
@ -113,7 +123,7 @@ we do by its (English) name in the Standard Rules:
|
|||
</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::id</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Going::id</span></span>:<br/><a href="4-gng.html#SP6">§6</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">GoingPlugin::id</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">GoingPlugin::id</span></span>:<br/><a href="4-gng.html#SP6">§6</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">if</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">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">RTActions::action_variable_set_ID</span><span class="plain-syntax">(</span><span class="identifier-syntax">going_action</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -130,7 +140,7 @@ aspect, and the other three share a new one.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">GOING_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">Going::write_clause_ID</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Going::write_clause_ID</span></span>:<br/><a href="4-gng.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::write_clause_ID</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">GoingPlugin::write_clause_ID</span></span>:<br/><a href="4-gng.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">GOING_FROM_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"going-from"</span><span class="plain-syntax">); </span><span class="reserved-syntax">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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">GOING_TO_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"going-to"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -141,7 +151,7 @@ aspect, and the other three share a new one.
|
|||
<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::aspect</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Going::aspect</span></span>:<br/><a href="4-gng.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">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::aspect</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">GoingPlugin::aspect</span></span>:<br/><a href="4-gng.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">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">GOING_FROM_AP_CLAUSE:</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="constant-syntax">IN_APCA</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">GOING_TO_AP_CLAUSE:</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="constant-syntax">IN_APCA</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>
|
||||
|
@ -163,10 +173,10 @@ a special ID number of our choice.
|
|||
</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::divert_clause_ID</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Going::divert_clause_ID</span></span>:<br/><a href="4-gng.html#SP1">§1</a>, <a href="4-gng.html#SP13">§13</a></span></button><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">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::divert_clause_ID</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">GoingPlugin::divert_clause_ID</span></span>:<br/><a href="4-gng.html#SP1">§1</a></span></button><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">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">oid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_owner_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">off</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">going_action</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">oid</span><span class="plain-syntax"> == </span><a href="4-gng.html#SP4" class="function-link"><span class="function-syntax">Going::id</span></a><span class="plain-syntax">())) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">going_action</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">oid</span><span class="plain-syntax"> == </span><a href="4-gng.html#SP4" class="function-link"><span class="function-syntax">GoingPlugin::id</span></a><span class="plain-syntax">())) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">off</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: *</span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="constant-syntax">GOING_FROM_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">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: *</span><span class="identifier-syntax">id</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>
|
||||
|
@ -185,7 +195,7 @@ writing source text.)
|
|||
</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::new_clause</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::new_clause</span></span>:<br/><a href="4-gng.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="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">GoingPlugin::new_clause</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">GoingPlugin::new_clause</span></span>:<br/><a href="4-gng.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="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> == </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> == </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP9" class="function-link"><span class="function-syntax">APClauses::set_opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">ALLOW_REGION_AS_ROOM_APCOPT</span><span class="plain-syntax">);</span>
|
||||
|
@ -196,11 +206,11 @@ writing source text.)
|
|||
</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">Going::go_nowhere</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">GoingPlugin::go_nowhere</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><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::set_spec</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::going_nowhere</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::going_nowhere</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">Rvalues::is_nothing_object_constant</span><span class="plain-syntax">(</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</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">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>
|
||||
|
@ -210,11 +220,11 @@ writing source text.)
|
|||
</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">Going::go_somewhere</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">GoingPlugin::go_somewhere</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><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::set_spec</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_somewhere</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::going_somewhere</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</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>
|
||||
|
@ -238,10 +248,10 @@ instead setting the appropriate entry options bit:
|
|||
</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::divert_clause_parsing</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::divert_clause_parsing</span></span>:<br/>Parse Clauses - <a href="4-pc.html#SP1_1_1">§1.1.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">anl_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::parse_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">GoingPlugin::parse_clause</span></span>:<br/><a href="4-gng.html#SP1">§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">anl_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bits</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> == </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">an</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="plain-syntax"> (</span><span class="function-syntax"><going-action-irregular-operand>(c-></span><span class="element-syntax">clause_text</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="function-syntax"><<r>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> (</span><span class="function-syntax"><going-action-irregular-operand>(c-></span><span class="element-syntax">clause_text</span><span class="plain-syntax">))) { *</span><span class="identifier-syntax">bits</span><span class="plain-syntax"> |= </span><span class="function-syntax"><<r>></span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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>Options bits which we later pick up here, moving the irregular noun phrase
|
||||
|
@ -249,7 +259,7 @@ into the <span class="extract"><span class="extract-syntax">GOING_TO_AP_CLAUSE</
|
|||
</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::act_on_options</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::act_on_options</span></span>:<br/><a href="4-gng.html#SP1">§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="identifier-syntax">entry_options</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fail</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::act_on_options</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">GoingPlugin::act_on_options</span></span>:<br/><a href="4-gng.html#SP1">§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="identifier-syntax">entry_options</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fail</span><span 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_options</span><span class="plain-syntax"> & </span><span class="constant-syntax">NOWHERE_AP_CLAUSE_OPTION</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><a href="4-anl.html#SP16" class="function-link"><span class="function-syntax">ActionNameLists::get_clause_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anl.html#SP19" class="function-link"><span class="function-syntax">ActionNameLists::truncate_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
|
@ -277,18 +287,18 @@ into the <span class="extract"><span class="extract-syntax">GOING_TO_AP_CLAUSE</
|
|||
</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::validate</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::validate</span></span>:<br/>Parse Clauses - <a href="4-pc.html#SP1_1_2">§1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = -1; </span><a href="4-gng.html#SP6" class="function-link"><span class="function-syntax">Going::divert_clause_ID</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">stv</span><span class="plain-syntax">, &</span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::validate</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">GoingPlugin::validate</span></span>:<br/><a href="4-gng.html#SP1">§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">anl_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">outcome</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">keyword</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ka</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">kb</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">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="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">GOING_FROM_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">keyword</span><span class="plain-syntax"> = </span><span class="string-syntax">"from"</span><span class="plain-syntax">; </span><span class="identifier-syntax">ka</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">; </span><span class="identifier-syntax">kb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">GOING_TO_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">keyword</span><span class="plain-syntax"> = </span><span class="string-syntax">"to"</span><span class="plain-syntax">; </span><span class="identifier-syntax">ka</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">; </span><span class="identifier-syntax">kb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">GOING_BY_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">keyword</span><span class="plain-syntax"> = </span><span class="string-syntax">"by"</span><span class="plain-syntax">; </span><span class="identifier-syntax">ka</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">; </span><span class="identifier-syntax">kb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">GOING_THROUGH_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">keyword</span><span class="plain-syntax"> = </span><span class="string-syntax">"through"</span><span class="plain-syntax">; </span><span class="identifier-syntax">ka</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_door</span><span class="plain-syntax">; </span><span class="identifier-syntax">kb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUSHING_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">keyword</span><span class="plain-syntax"> = </span><span class="string-syntax">"with"</span><span class="plain-syntax">; </span><span class="identifier-syntax">ka</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">; </span><span class="identifier-syntax">kb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">keyword</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">NOT_APPLICABLE</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-gng.html#SP14" class="function-link"><span class="function-syntax">Going::check_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">keyword</span><span class="plain-syntax">, </span><span class="identifier-syntax">ka</span><span class="plain-syntax">, </span><span class="identifier-syntax">kb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">keyword</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="identifier-syntax">outcome</span><span class="plain-syntax"> = </span><a href="4-gng.html#SP14" class="function-link"><span class="function-syntax">GoingPlugin::check_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">evaluation</span><span class="plain-syntax">, </span><span class="identifier-syntax">keyword</span><span class="plain-syntax">, </span><span class="identifier-syntax">ka</span><span class="plain-syntax">, </span><span class="identifier-syntax">kb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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="SP14" class="paragraph-anchor"></a><b>§14. </b>Each clause can be within one of up to two kinds, or else can be "nothing"
|
||||
|
@ -298,7 +308,7 @@ or unspecified:
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PM_GoingWrongKind_issued_at</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PM_GoingWithoutObject_issued_at</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::check_clause</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::check_clause</span></span>:<br/><a href="4-gng.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">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">keyword</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ka</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kb</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::check_clause</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">GoingPlugin::check_clause</span></span>:<br/><a href="4-gng.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">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">keyword</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ka</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kb</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_nothing_object_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_description_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -345,7 +355,7 @@ to make sure it actually exists. So this can be used to see if the need arises:
|
|||
</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::need_to_check_destination_exists</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::need_to_check_destination_exists</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</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">NULL</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> ((</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">) != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">) != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) ||</span>
|
||||
|
@ -362,10 +372,9 @@ code if <span class="extract"><span class="extract-syntax">ap1</span></span> has
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::compare_specificity</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Going::compare_specificity</span></span>:<br/><a href="4-gng.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">ap1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ignore_in</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">ignore_in</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">suspend_usual_from_and_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GoingPlugin::compare_specificity</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">GoingPlugin::compare_specificity</span></span>:<br/><a href="4-gng.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">ap1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ignore_in</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.4 - Action/Where/Other Optional Clauses"</span><span class="plain-syntax">;</span>
|
||||
|
||||
|
@ -374,8 +383,9 @@ code if <span class="extract"><span class="extract-syntax">ap1</span></span> has
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> > </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) { *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> < </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) { *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = -1; </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">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP18" class="function-link"><span class="function-syntax">APClauses::cmp_clause</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PUSHING_AP_CLAUSE</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="reserved-syntax">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">rv</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">ignore_in</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">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP18" class="function-link"><span class="function-syntax">APClauses::cmp_clause</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PUSHING_AP_CLAUSE</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="reserved-syntax">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">rv</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">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP18" class="function-link"><span class="function-syntax">APClauses::cmp_clause</span></a><span class="plain-syntax">(</span><span class="constant-syntax">GOING_BY_AP_CLAUSE</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="reserved-syntax">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">rv</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">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP18" class="function-link"><span class="function-syntax">APClauses::cmp_clause</span></a><span class="plain-syntax">(</span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</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="reserved-syntax">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">rv</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>
|
||||
|
||||
|
@ -386,15 +396,23 @@ code if <span class="extract"><span class="extract-syntax">ap1</span></span> has
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> > </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) { *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> < </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) { *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = -1; </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#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) && (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> && (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">)) && (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP18" class="function-link"><span class="function-syntax">APClauses::cmp_clauses</span></a><span class="plain-syntax">(</span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">suspend_usual_from_and_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</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-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP18" class="function-link"><span class="function-syntax">APClauses::cmp_clauses</span></a><span class="plain-syntax">(</span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) </span><span class="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">suspend_usual_from_and_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) && (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> && (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">)) && (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP18" class="function-link"><span class="function-syntax">APClauses::cmp_clauses</span></a><span class="plain-syntax">(</span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</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="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#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</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-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP18" class="function-link"><span class="function-syntax">APClauses::cmp_clauses</span></a><span class="plain-syntax">(</span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) </span><span class="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">suspend_usual_from_and_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
|
@ -405,11 +423,11 @@ code if <span class="extract"><span class="extract-syntax">ap1</span></span> has
|
|||
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP18" class="function-link"><span class="function-syntax">APClauses::cmp_clause</span></a><span class="plain-syntax">(</span><span class="constant-syntax">GOING_TO_AP_CLAUSE</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="reserved-syntax">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-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="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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresscurrent">gng</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>
|
||||
|
|
|
@ -136,7 +136,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><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">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#SP6" 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>
|
||||
|
||||
|
@ -146,7 +146,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><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="identifier-syntax">NAMED_AP_MC</span><span class="plain-syntax">, </span><a href="4-ak.html#SP6" 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>
|
||||
|
@ -178,7 +178,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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresscurrent">nap</li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -88,12 +88,12 @@ because it fails this one does not mean it is wrong.) To improve our chances,
|
|||
the code below sets the following global variable on each 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">enum</span> <span class="constant-syntax">MISC_PAPF</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NOPARTICIPLE_PAPF</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">MIXEDNOUNS_PAPF</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">WHEN_PAPF</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">WHENOKAY_PAPF</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">IMMISCIBLE_PAPF</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>
|
||||
|
@ -189,7 +189,7 @@ still be incomprehensible.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><action-pattern></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::nonempty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">)) && (</span><span class="function-syntax"><<r>></span><span class="plain-syntax"> == </span><span class="constant-syntax">ACTOR_EXPLICITLY_UNIVERSAL</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::nonempty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">)) && (</span><span class="function-syntax"><<r>></span><span class="plain-syntax"> == </span><span class="constant-syntax">ACTOR_EXP_UNIVERSAL</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">anyone</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pap.html#SP2" class="function-link"><span class="function-syntax">ParseActionPatterns::restore_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">saved</span><span class="plain-syntax">);</span>
|
||||
|
@ -277,9 +277,9 @@ Our aim here is to determine who will perform the action.
|
|||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="Preform-constant-syntax">ACTOR_REQUESTED</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">0</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">ACTOR_NAMED</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">ACTOR_EXPLICITLY_UNIVERSAL</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">ACTOR_EXPLICITLY_PLAYER</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">ACTOR_IMPLICITLY_PLAYER</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">ACTOR_EXP_UNIVERSAL</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">ACTOR_EXP_PLAYER</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">ACTOR_IMP_PLAYER</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">4</span>
|
||||
</pre>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
|
@ -287,8 +287,8 @@ Our aim here is to determine who will perform the action.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><s-ap-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Someone specific</span><span class="named-paragraph-number">8.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><actor-description></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Someone specific</span><span class="named-paragraph-number">8.2</span></a></span>
|
||||
|
||||
<span class="Preform-function-syntax"><we-are-action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
|
@ -297,10 +297,10 @@ Our aim here is to determine who will perform the action.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><s-ap-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Someone specific</span><span class="named-paragraph-number">8.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><actor-description></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Someone specific</span><span class="named-paragraph-number">8.2</span></a></span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-pattern-negated></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
|
@ -309,10 +309,10 @@ Our aim here is to determine who will perform the action.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><s-ap-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Someone specific</span><span class="named-paragraph-number">8.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</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"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</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"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><actor-description></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Someone specific</span><span class="named-paragraph-number">8.2</span></a></span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-pattern-past></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
|
@ -320,16 +320,16 @@ Our aim here is to determine who will perform the action.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><s-ap-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Someone specific</span><span class="named-paragraph-number">8.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-past></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-past></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-past></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-pattern-past-negated></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asked</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><s-ap-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Someone requested</span><span class="named-paragraph-number">8.1</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><s-ap-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Someone specific</span><span class="named-paragraph-number">8.2</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-past></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#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Anyone except the player</span><span class="named-paragraph-number">8.3</span></a></span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-past></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-present></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-three-past></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXP_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="SP8_1" class="paragraph-anchor"></a><b>§8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Someone requested</span><span class="named-paragraph-number">8.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
|
@ -355,7 +355,7 @@ Our aim here is to determine who will perform the action.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<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">RP</span><span class="plain-syntax">[1]; </span><a href="4-apc.html#SP11" class="function-link"><span class="function-syntax">APClauses::make_actor_anyone_except_player</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="constant-syntax">ACTOR_EXPLICITLY_UNIVERSAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> };</span>
|
||||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">ACTOR_EXP_UNIVERSAL</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#SP8">§8</a> (10 times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Note that the three present-tense cases all allow the abbreviated form
|
||||
|
@ -476,8 +476,8 @@ name; so we needn't spend any further time.
|
|||
<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>
|
||||
<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">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Vocabulary::disjunction_of_flags</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><a href="4-pap.html#SP4" class="function-link"><span class="function-syntax">ParseActionPatterns::current_tense</span></a><span class="plain-syntax">() == </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">) && ((</span><span class="identifier-syntax">d</span><span class="plain-syntax"> & (</span><span class="identifier-syntax">ACTION_PARTICIPLE_MC</span><span class="plain-syntax">+</span><span class="identifier-syntax">NAMED_AP_MC</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"No participle found in: %W\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><a href="4-pap.html#SP4" class="function-link"><span class="function-syntax">ParseActionPatterns::current_tense</span></a><span class="plain-syntax">() == </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">d</span><span class="plain-syntax"> & (</span><span class="identifier-syntax">ACTION_PARTICIPLE_MC</span><span class="plain-syntax">+</span><span class="identifier-syntax">NAMED_AP_MC</span><span class="plain-syntax">)) == </span><span class="constant-syntax">0</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">NOPARTICIPLE_PAPF</span><span 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>
|
||||
|
@ -527,12 +527,37 @@ special clause of its own.
|
|||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><ap-five></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-six></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-five-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"> { 0, RP[1] }; action_pattern *ap = *XP; APClauses::set_spec(ap, WHEN_AP_CLAUSE, RP[2]); if (pap_failure_reason == MISC_PAPF) pap_failure_reason = WHENOKAY_PAPF;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-six></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-five-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"> { 0, NULL }; pap_failure_reason = WHENOKAY_PAPF; return FALSE; </span><span class="Preform-comment-syntax"> used only to diagnose problems</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, NULL }; if (pap_failure_reason != WHENOKAY_PAPF) pap_failure_reason = WHEN_PAPF; return FALSE; </span><span class="Preform-comment-syntax"> used only to diagnose problems</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-six></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-five-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-pap.html#SP14_1" class="named-paragraph-link"><span class="named-paragraph">Succeed with when okay</span><span class="named-paragraph-number">14.1</span></a></span><span class="Preform-constant-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-six></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"> { pass 1 };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-five-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-pap.html#SP14_2" class="named-paragraph-link"><span class="named-paragraph">Fail with when okay</span><span class="named-paragraph-number">14.2</span></a></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-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="named-paragraph-container code-font"><a href="4-pap.html#SP14_3" class="named-paragraph-link"><span class="named-paragraph">Fail with when not okay</span><span class="named-paragraph-number">14.3</span></a></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="SP14_1" class="paragraph-anchor"></a><b>§14.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Succeed with when okay</span><span class="named-paragraph-number">14.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1]; </span><a href="4-apc.html#SP6" class="function-link"><span class="function-syntax">APClauses::set_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">WHEN_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[2]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax"> == </span><span class="constant-syntax">MISC_PAPF</span><span class="plain-syntax">) </span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">WHENOKAY_PAPF</span><span class="plain-syntax">;</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#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14_2" class="paragraph-anchor"></a><b>§14.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Fail with when okay</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">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">WHENOKAY_PAPF</span><span 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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14_3" class="paragraph-anchor"></a><b>§14.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Fail with when not okay</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">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax"> != </span><span class="constant-syntax">WHENOKAY_PAPF</span><span class="plain-syntax">) </span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">WHEN_PAPF</span><span 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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b><ap-five-condition> is really just <s-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.
|
||||
|
@ -546,16 +571,16 @@ 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-identifier-syntax">Frames::get_stvol</span><span class="Preform-plain-syntax">(),</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">all_nonempty_stacked_action_vars</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">"A when clause <%W> is suspected.\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">parse_node</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">wts</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">parse_node</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">when_cond</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">NULL</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">int</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">pap_failure_reason</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">saved</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP2" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::exit_mode</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-constant-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"><s-condition></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">wts</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-function-syntax"><s-condition></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">when_cond</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">pap_failure_reason</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><a href="4-pap.html#SP2" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::restore_mode</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">saved</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">phsf</span><span class="Preform-plain-syntax">) </span><span class="Preform-identifier-syntax">Frames::remove_nonphrase_stack_frame</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">wts</span><span class="Preform-plain-syntax">) && (</span><span class="Preform-identifier-syntax">Dash::validate_conditional_clause</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">wts</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">"When clause validated: $P.\n"</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">wts</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">wts</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">when_cond</span><span class="Preform-plain-syntax">) && (</span><span class="Preform-identifier-syntax">Dash::validate_conditional_clause</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">when_cond</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">"When clause validated: $P.\n"</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">when_cond</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><span class="Preform-identifier-syntax">when_cond</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>
|
||||
|
@ -589,7 +614,7 @@ so what's left can't very efficiently be written in Preform.
|
|||
</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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</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-pc.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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresscurrent">pap</li><li class="progresssection"><a href="4-pc.html">pc</a></li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-pc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -100,11 +100,11 @@ did, and is much easier to specify.
|
|||
<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">"Level Seven on: %W\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="4-anl.html#SP28" class="function-link"><span class="function-syntax">ActionNameLists::parse</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><a href="4-pap.html#SP4" class="function-link"><span class="function-syntax">ParseActionPatterns::current_tense</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="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 for %W is:\n$L\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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">"Action name list for %W is:\n$L"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::length</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pc.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Reduce the list to the first viable entry at each word position</span><span class="named-paragraph-number">1.1</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">"Reduced to viability:\n$L\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Reduced to viability:\n$L"</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-pc.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Reject the resulting list if two or more entries contain clauses</span><span class="named-paragraph-number">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-pc.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Reject the resulting list if, given the clauses, two actions are immiscible</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -169,7 +169,7 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">fail</span><span class="plain-syntax">) { </span><a href="4-anl.html#SP5" class="function-link"><span class="function-syntax">ActionNameLists::mark_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">); </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::act_on_ANL_entry_options</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry_options</span><span class="plain-syntax">, &</span><span class="identifier-syntax">fail</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">fail</span><span class="plain-syntax">) { </span><a href="4-anl.html#SP5" class="function-link"><span class="function-syntax">ActionNameLists::mark_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">); </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pc.html#SP1_1_2" class="named-paragraph-link"><span class="named-paragraph">Typecheck or otherwise validate the clauses</span><span class="named-paragraph-number">1.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-pc.html#SP1_1_3" class="named-paragraph-link"><span class="named-paragraph">Typecheck or otherwise validate the clauses</span><span class="named-paragraph-number">1.1.3</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">fail</span><span class="plain-syntax">) { </span><a href="4-anl.html#SP5" class="function-link"><span class="function-syntax">ActionNameLists::mark_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">); </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">viable</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -177,15 +177,30 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
<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-pc.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_1" class="paragraph-anchor"></a><b>§1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the clauses</span><span class="named-paragraph-number">1.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_1" class="paragraph-anchor"></a><b>§1.1.1. </b>Now each clause's text must be evaluated: for example, on the clause
|
||||
<span class="extract"><span class="extract-syntax">[in-presence: hans]</span></span> we will have to evaluate "Hans".
|
||||
</p>
|
||||
|
||||
<p class="commentary">Note the special case for actions whose second noun has the kind <span class="extract"><span class="extract-syntax">K_understanding</span></span>,
|
||||
meaning that they hold topics of conversation ("ask Hans about cosmic rays").
|
||||
There is ordinarily no way in Inform to write a literal of this kind, but here
|
||||
we are allowed to write a text literal instead, and it is automatically converted.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the clauses</span><span class="named-paragraph-number">1.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">saved_pap</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="identifier-syntax">LOOP_THROUGH_ANL_CLAUSES</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</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">fail</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_PATTERN_PARSING_DA</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"parsing "</span><span class="plain-syntax">); </span><a href="4-anl.html#SP26" class="function-link"><span class="function-syntax">ActionNameLists::log_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">); </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" - "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="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">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_text</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">opts</span><span class="plain-syntax"> = </span><a href="4-gng.html#SP11" class="function-link"><span class="function-syntax">Going::divert_clause_parsing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</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">opts</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">opts</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">PluginCalls::parse_AP_clause</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">, &</span><span class="identifier-syntax">opts</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">opts</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">entry_options</span><span class="plain-syntax"> |= </span><span class="identifier-syntax">opts</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">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> == </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">an</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">)) &&</span>
|
||||
|
@ -202,15 +217,48 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
<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">c</span><span class="plain-syntax">-></span><span class="element-syntax">evaluation</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">evaluation</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_PATTERN_PARSING_DA</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">fail</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"fail\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"$P\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">evaluation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax"> = </span><span class="identifier-syntax">saved_pap</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pc.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2" class="paragraph-anchor"></a><b>§1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Typecheck or otherwise validate the clauses</span><span class="named-paragraph-number">1.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2" class="paragraph-anchor"></a><b>§1.1.2. </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".
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><action-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { FALSE, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">else</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { FALSE, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><s-ap-parameter></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-function-syntax"><understanding-action-irregular-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { TRUE, - }</span>
|
||||
<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="SP1_1_3" class="paragraph-anchor"></a><b>§1.1.3. </b>Supposing that we managed to find values for each clause, we might still
|
||||
have impossible ones: "putting 101 on false", say, where the noun seems to
|
||||
be the number 101 and the second noun the truth state "false". So we need
|
||||
to typecheck each clause.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Typecheck or otherwise validate the clauses</span><span class="named-paragraph-number">1.1.3</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ANL_CLAUSES</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</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">fail</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_PATTERN_PARSING_DA</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"validating "</span><span class="plain-syntax">); </span><a href="4-anl.html#SP26" class="function-link"><span class="function-syntax">ActionNameLists::log_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">); </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" - "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">check</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">c</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">NOUN_AP_CLAUSE:</span>
|
||||
|
@ -229,17 +277,41 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-gng.html#SP13" class="function-link"><span class="function-syntax">Going::validate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">evaluation</span><span 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">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><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="identifier-syntax">check</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PluginCalls::validate_AP_clause</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</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">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_PATTERN_PARSING_DA</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"referred to plugin - "</span><span 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">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">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_PATTERN_PARSING_DA</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"failed badly with problem\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">check</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="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">c</span><span class="plain-syntax">-></span><span class="element-syntax">evaluation</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">fail</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">check</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Dash::validate_parameter</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">evaluation</span><span class="plain-syntax">, </span><span class="identifier-syntax">check</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">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">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_PATTERN_PARSING_DA</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"using Dash with kind %u - "</span><span class="plain-syntax">, </span><span class="identifier-syntax">check</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">check</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Dash::validate_parameter</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">evaluation</span><span class="plain-syntax">, </span><span class="identifier-syntax">check</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fail</span><span class="plain-syntax"> = </span><span class="identifier-syntax">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">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_PATTERN_PARSING_DA</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">fail</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"fail\n"</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"pass\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pc.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>§1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject the resulting list if two or more entries contain clauses</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>§1.2. </b>This is where heterogenous patterns like "dropping a thing or taking a
|
||||
container" are thrown out: only the last-placed action is allowed to have
|
||||
clauses.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject the resulting list if two or more entries contain clauses</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -249,11 +321,27 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> > </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">MIXEDNOUNS_PAPF</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">"Rejecting with mixed nouns\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pc.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>§1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject the resulting list if, given the clauses, two actions are immiscible</span><span class="named-paragraph-number">1.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>§1.3. </b>And this is where impossible mixtures of actions are thrown out: for
|
||||
example, if there is an action "setting" whose noun is a number, then
|
||||
"taking or setting 50" will be thrown out because the two actions here
|
||||
disagree about the meaning of the noun.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Similarly, "looking or taking a vehicle" is thrown out because looking has
|
||||
no noun.
|
||||
</p>
|
||||
|
||||
<p class="commentary">This is done in the interests of having a type-safe way to compile the
|
||||
pattern check, but really it also avoids allowing action patterns which
|
||||
look like syllepses.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reject the resulting list if, given the clauses, two actions are immiscible</span><span class="named-paragraph-number">1.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -303,11 +391,15 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">immiscible</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pap_failure_reason</span><span class="plain-syntax"> = </span><span class="constant-syntax">IMMISCIBLE_PAPF</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">"Rejecting with immiscible actions\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pc.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_4" class="paragraph-anchor"></a><b>§1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Produce and return an action pattern from what survives of the list</span><span class="named-paragraph-number">1.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP1_4" class="paragraph-anchor"></a><b>§1.4. </b>Fanfares and trumpets voluntary:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Produce and return an action pattern from what survives of the list</span><span class="named-paragraph-number">1.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -316,7 +408,8 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">first</span><span class="plain-syntax">) && ((</span><span class="identifier-syntax">first</span><span class="plain-syntax">-></span><span class="element-syntax">action_listed</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">first</span><span class="plain-syntax">-></span><span class="element-syntax">nap_listed</span><span class="plain-syntax">))) </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">list</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ANL</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ANL_CLAUSES</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Writing %d '%W'\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_text</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="plain-syntax"> </span><span class="string-syntax">"Succeeds with clause %d = '%W'\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">clause_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">c</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="4-apc.html#SP13" class="function-link"><span class="function-syntax">APClauses::set_action_variable_spec</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="element-syntax">stv_to_match</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">-></span><span class="element-syntax">evaluation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
|
@ -325,25 +418,8 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
<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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pc.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </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".
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><action-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { FALSE, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">else</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { FALSE, - }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><s-ap-parameter></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-function-syntax"><understanding-action-irregular-operand></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">something/anything</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { TRUE, - }</span>
|
||||
<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>
|
||||
<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-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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</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">pc</li><li class="progresssection"><a href="4-ea.html">ea</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>
|
||||
<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-ap2.html">ap2</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresscurrent">pc</li><li class="progresssection"><a href="4-ea.html">ea</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-gng.html">gng</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>
|
||||
|
|
|
@ -297,7 +297,7 @@ i.e., all Inter objects corresponding to I7 things.
|
|||
</pre>
|
||||
<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>
|
||||
<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="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-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -243,11 +243,6 @@
|
|||
<spon class="sectiontitle">Action Pattern Clauses</span></a> -
|
||||
<span class="sectionpurpose">Pattern-matches on individual nouns in an action are called clauses.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-gng.html">
|
||||
<spon class="sectiontitle">Going</span></a> -
|
||||
<span class="sectionpurpose">A plugin to provide a little extra support for the "going" action.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-pap.html">
|
||||
<spon class="sectiontitle">Parse Action Patterns</span></a> -
|
||||
|
@ -268,6 +263,11 @@
|
|||
<spon class="sectiontitle">Named Action Patterns</span></a> -
|
||||
<span class="sectionpurpose">A named action pattern is a categorisation of behaviour.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-gng.html">
|
||||
<spon class="sectiontitle">Going</span></a> -
|
||||
<span class="sectionpurpose">A plugin to provide a little extra support for the "going" action.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
@ -1291,7 +1291,7 @@ might have gone wrong.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">NAP_problem_explained</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">form</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ACTOR_EXPLICITLY_PLAYER</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">form</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ACTOR_EXP_PLAYER</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"'%4' would have been okay except for using the word 'trying', "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which isn't allowed in a list like this; "</span><span class="plain-syntax">);</span>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -123,7 +123,7 @@ hacky constructs which only the SR should ever refer to.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">i6_glob_VAR</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">RTTemporaryVariables::from_nve</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">RTTemporaryVariables::from_nve</span></span>:<br/>Action Patterns - <a href="5-ap.html#SP6_1_1_1">§6.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable_emission</span><span class="plain-syntax"> </span><span class="identifier-syntax">nve</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">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">RTTemporaryVariables::from_nve</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">RTTemporaryVariables::from_nve</span></span>:<br/>Going - <a href="5-gng.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable_emission</span><span class="plain-syntax"> </span><span class="identifier-syntax">nve</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><a href="4-vrb.html#SP2" class="function-link"><span class="function-syntax">RTVariables::set_I6_identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i6_glob_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">nve</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-vrb.html#SP2" class="function-link"><span class="function-syntax">RTVariables::set_I6_identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i6_glob_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">nve</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::set_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">i6_glob_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -143,7 +143,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">nve</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">nonlocal_variable_emission</span><span class="plain-syntax"> </span><span class="function-syntax">RTVariables::nve_from_mstack</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">RTVariables::nve_from_mstack</span></span>:<br/><a href="4-vrb.html#SP4">§4</a><br/>Action Patterns - <a href="5-ap.html#SP6_1_1_1">§6.1.1.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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow_outside</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">nonlocal_variable_emission</span><span class="plain-syntax"> </span><span class="function-syntax">RTVariables::nve_from_mstack</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">RTVariables::nve_from_mstack</span></span>:<br/><a href="4-vrb.html#SP4">§4</a><br/>Going - <a href="5-gng.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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow_outside</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">nonlocal_variable_emission</span><span class="plain-syntax"> </span><span class="identifier-syntax">nve</span><span class="plain-syntax"> = </span><a href="4-vrb.html#SP1" class="function-link"><span class="function-syntax">RTVariables::new_nve</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">allow_outside</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">nve</span><span class="plain-syntax">.</span><span class="element-syntax">textual_form</span><span class="plain-syntax">, </span><span class="string-syntax">"(MStack-->MstVON(%d,%d))"</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">index</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -502,7 +502,7 @@ infrastructure, and we access it with a single call.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-scn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-los.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-scn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-los.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -167,10 +167,10 @@ exceptional case where the clause doesn't act on a single I6 global,
|
|||
and in this case we therefore ignore <span class="extract"><span class="extract-syntax">I6_global_name</span></span>.
|
||||
</li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTActionPatterns::compile_pattern_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">RTActionPatterns::compile_pattern_match_clause</span></span>:<br/><a href="5-ap.html#SP6_1_1_1">§6.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_global_variable</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTActionPatterns::compile_pattern_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">RTActionPatterns::compile_pattern_match_clause</span></span>:<br/><a href="5-ap.html#SP6_1_1_1">§6.1.1.1</a><br/>Going - <a href="5-gng.html#SP1">§1</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="plain-syntax"> </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_global_variable</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">verify_as_kind</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">adapt_region</span><span 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">f</span><span 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="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_var_TS</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">I6_global_variable</span><span class="plain-syntax">)</span>
|
||||
|
@ -179,16 +179,16 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_parameter</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">I6_global_variable</span><span class="plain-syntax"> == </span><span class="identifier-syntax">parameter_object_VAR</span><span class="plain-syntax">) </span><span class="identifier-syntax">is_parameter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_var_TS</span><span class="plain-syntax">, </span><span class="identifier-syntax">is_parameter</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">verify_as_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">adapt_region</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause_inner</span></a><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">I6_var_TS</span><span class="plain-syntax">, </span><span class="identifier-syntax">is_parameter</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">verify_as_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">adapt_region</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">RTActionPatterns::compile_pattern_match_clause_inner</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">RTActionPatterns::compile_pattern_match_clause_inner</span></span>:<br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_var_TS</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_parameter</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause_inner</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">RTActionPatterns::compile_pattern_match_clause_inner</span></span>:<br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</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="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I6_var_TS</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_parameter</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">verify_as_kind</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">adapt_region</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">force_proposition</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">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">f</span><span 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="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">"[MPE on $P: $P]\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_var_TS</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><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
|
@ -200,7 +200,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"say 'Instead of taking a value: ...' because the taking action "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"applies to objects; the vaguest you're allowed to be is 'Instead "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"of taking an object: ...'."</span><span 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="plain-syntax"> }</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="identifier-syntax">Descriptions::get_calling</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
|
@ -336,7 +336,6 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</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">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><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="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
|
@ -394,6 +393,8 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">REQUESTER_DOESNT_EXIST_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">ACTOR_MATCHES_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">ACTION_MATCHES_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">SET_SELF_TO_ACTOR_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">WHEN_CONDITION_HOLDS_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NOUN_EXISTS_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NOUN_IS_INP1_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">SECOND_EXISTS_CPMC</span>
|
||||
|
@ -407,15 +408,10 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">ACTOR_LOCATION_MATCHES_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">PARAMETER_MATCHES_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">OPTIONAL_CLAUSE_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NOWHERE_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">SOMEWHERE_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NOT_NOWHERE_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">PRESENCE_OF_MATCHES_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">PRESENCE_OF_IN_SCOPE_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">LOOP_OVER_SCOPE_WITH_CALLING_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">LOOP_OVER_SCOPE_WITHOUT_CALLING_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">SET_SELF_TO_ACTOR_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">WHEN_CONDITION_HOLDS_CPMC</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">MAX_CPM_CLAUSES</span><span class="plain-syntax"> </span><span class="constant-syntax">256</span>
|
||||
<span class="definition-keyword">define</span> <span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cpm_count</span><span class="plain-syntax"> >= </span><span class="constant-syntax">MAX_CPM_CLAUSES</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"action pattern grossly overcomplex"</span><span class="plain-syntax">);</span>
|
||||
|
@ -529,13 +525,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">OPTIONAL_CLAUSE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Going::going_nowhere</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">NOWHERE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Going::going_somewhere</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">SOMEWHERE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Going::need_to_check_destination_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">NOT_NOWHERE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::set_pattern_match_requirements</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, &</span><span class="identifier-syntax">cpm_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">needed</span><span class="plain-syntax">, </span><span class="identifier-syntax">needed_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">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">IN_THE_PRESENCE_OF_AP_CLAUSE</span><span class="plain-syntax">) != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_be_present</span><span class="plain-syntax"> =</span>
|
||||
|
@ -577,10 +567,9 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ranges_from</span><span class="plain-syntax">[4], </span><span class="identifier-syntax">ranges_to</span><span class="plain-syntax">[4], </span><span class="identifier-syntax">ranges_count</span><span class="plain-syntax">[4];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_RANGE</span><span class="plain-syntax">(0, </span><span class="constant-syntax">ACTOR_IS_PLAYER_CPMC</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_MATCHES_CPMC</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_RANGE</span><span class="plain-syntax">(1, </span><span class="constant-syntax">ACTION_MATCHES_CPMC</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTION_MATCHES_CPMC</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_RANGE</span><span class="plain-syntax">(2, </span><span class="constant-syntax">NOUN_EXISTS_CPMC</span><span class="plain-syntax">, </span><span class="constant-syntax">LOOP_OVER_SCOPE_WITHOUT_CALLING_CPMC</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_RANGE</span><span class="plain-syntax">(2, </span><span class="constant-syntax">NOUN_EXISTS_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NO_DEFINED_CPMC_VALUES</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_RANGE</span><span class="plain-syntax">(3, </span><span class="constant-syntax">SET_SELF_TO_ACTOR_CPMC</span><span class="plain-syntax">, </span><span class="constant-syntax">WHEN_CONDITION_HOLDS_CPMC</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">f</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">range_to_compile</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">LocalVariables::begin_condition_emit</span><span class="plain-syntax">();</span>
|
||||
|
||||
|
@ -693,6 +682,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">"So %d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cpmc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::code_comment</span></a><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">DISCARD_TEXT</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">PluginCalls::compile_pattern_match_clause</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">cpmc</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">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cpmc</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_IS_PLAYER_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
|
||||
|
@ -719,7 +709,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACTOR_MATCHES_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_actor_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">ACTOR_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><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_actor_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">ACTOR_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="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACTION_MATCHES_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-act.html#SP4" class="function-link"><span class="function-syntax">RTActions::emit_anl</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">action_list</span><span class="plain-syntax">);</span>
|
||||
|
@ -745,25 +735,25 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOUN_MATCHES_AS_OBJECT_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_noun_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_noun_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_of_noun</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOUN_MATCHES_AS_VALUE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_iname</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PARSED_NUMBER_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_of_noun</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_of_noun</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SECOND_MATCHES_AS_OBJECT_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_second_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_second_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SECOND_MATCHES_AS_VALUE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_iname</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PARSED_NUMBER_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PLAYER_LOCATION_MATCHES_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">real_location_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-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">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">real_location_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-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">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACTOR_IN_RIGHT_PLACE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||
|
@ -776,66 +766,28 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACTOR_LOCATION_MATCHES_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">actor_location_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-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">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">actor_location_VAR</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-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">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PARAMETER_MATCHES_CPMC:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">saved_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NonlocalVariables::kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">parameter_object_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::set_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">parameter_object_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">parameter_kind</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parameter_object_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">parameter_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">NonlocalVariables::set_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">parameter_object_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">saved_kind</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">OPTIONAL_CLAUSE_CPMC:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_existing_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">stv_to_match</span><span class="plain-syntax">-></span><span class="identifier-syntax">underlying_var</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::opt</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="identifier-syntax">ALLOW_REGION_AS_ROOM_APCOPT</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOWHERE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">LOOKUP_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MSTACK_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MSTVON_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Going::id</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SOMEWHERE_CPMC:</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">somewhere</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_room</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_nve</span></a><span class="plain-syntax">(</span><a href="4-vrb.html#SP1" class="function-link"><span class="function-syntax">RTVariables::nve_from_mstack</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Going::id</span><span class="plain-syntax">(), </span><span class="constant-syntax">1</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">K_object</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">somewhere</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOT_NOWHERE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">LOOKUP_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MSTACK_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MSTVON_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Going::id</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PRESENCE_OF_MATCHES_CPMC:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_be_present</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::object_exactly_described_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">IN_THE_PRESENCE_OF_AP_CLAUSE</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_iname</span></a><span class="plain-syntax">(</span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to_be_present</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">APClauses::spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">IN_THE_PRESENCE_OF_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -959,7 +911,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ap.html#SP7">§7</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresscurrent">ap</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresscurrent">ap</li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-gng.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -142,7 +142,7 @@
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-bck.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-rgn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-rgn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -211,7 +211,7 @@ around it, in byte-accessible memory.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ef.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresscurrent">bd</li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-spt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ef.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresscurrent">bd</li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-spt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure external_file_compilation_data is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-se.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-bd.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-se.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-bd.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-prs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-se.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-prs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-se.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
143
docs/runtime-module/5-gng.html
Normal file
143
docs/runtime-module/5-gng.html
Normal file
|
@ -0,0 +1,143 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Going</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<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="index.html"><span class="selectedlink">runtime</span></a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Going' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">runtime</a></li><li><a href="index.html#5">Chapter 5: Plugin Support</a></li><li><b>Going</b></li></ul></div>
|
||||
<p class="purpose">Tweaks to compiling APs for the going action.</p>
|
||||
|
||||
<ul class="toc"><li><a href="5-gng.html#SP1">§1. Compiling action tries</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Compiling action tries. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">NOWHERE_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">SOMEWHERE_CPMC</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NOT_NOWHERE_CPMC</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">RTGoing::set_pattern_match_requirements</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">cpm</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cpm_count</span><span class="plain-syntax"> = *</span><span class="identifier-syntax">cpm</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">GoingPlugin::going_nowhere</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">NOWHERE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">GoingPlugin::going_somewhere</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">SOMEWHERE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">GoingPlugin::need_to_check_destination_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">NOT_NOWHERE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">cpm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cpm_count</span><span 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">RTGoing::compile_pattern_match_clause</span><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">cpmc</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">cpmc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOWHERE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">LOOKUP_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MSTACK_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MSTVON_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">GoingPlugin::id</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SOMEWHERE_CPMC:</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">somewhere</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_room</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_nve</span></a><span class="plain-syntax">(</span><a href="4-vrb.html#SP1" class="function-link"><span class="function-syntax">RTVariables::nve_from_mstack</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">GoingPlugin::id</span><span class="plain-syntax">(), </span><span class="constant-syntax">1</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">K_object</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">somewhere</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOT_NOWHERE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">LOOKUP_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MSTACK_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MSTVON_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">GoingPlugin::id</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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="5-ap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresscurrent">gng</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -131,7 +131,7 @@ function togglePopup(material_id) {
|
|||
<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">Holsters::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">INTER_VAL_VHMODE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">los</span><span class="plain-syntax">-></span><span class="element-syntax">what_to_find</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">lv_sp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lvalues::new_LOCAL_VARIABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">it_lv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, &</span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause_inner</span></a><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">lv_sp</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">los</span><span class="plain-syntax">-></span><span class="element-syntax">what_to_find</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_truth_state</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
|
@ -149,7 +149,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-los.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-act.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresscurrent">los</li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-nap.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-act.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresscurrent">los</li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-nap.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -112,7 +112,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure nap_compilation_data is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-los.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresscurrent">nap</li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-ap.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-los.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresscurrent">nap</li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-ap.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -186,7 +186,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure short_name_notice is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-rsft.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">nmn</li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-prs.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-rsft.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">nmn</li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-prs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -148,7 +148,7 @@ for the kinds we inherit from.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nmn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresscurrent">prs</li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-fgr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nmn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresscurrent">prs</li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-fgr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -108,7 +108,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="5-bck.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresscurrent">rgn</li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-tm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bck.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresscurrent">rgn</li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-tm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -440,7 +440,7 @@ turn by turn.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-sc.html#SP4_2">§4.2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresscurrent">sc</li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-ts.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresscurrent">sc</li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-ts.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -782,7 +782,7 @@ actually running:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresscurrent">scn</li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-act.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresscurrent">scn</li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-act.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-fgr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-ef.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-fgr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-ef.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -142,7 +142,7 @@ be compiled, so this code is never used.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresscurrent">spt</li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-tp.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresscurrent">spt</li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-tp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -341,7 +341,7 @@ identifier names for instance have not yet been settled.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-rgn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresscurrent">tm</li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-sc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-rgn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresscurrent">tm</li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-sc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -114,7 +114,7 @@ the function <span class="extract"><span class="extract-syntax">ChangePlayer</sp
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-spt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-bck.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-spt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-bck.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-sc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresscurrent">ts</li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-scn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-sc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresscurrent">ts</li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progressnext"><a href="5-scn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -389,6 +389,11 @@
|
|||
<spon class="sectiontitle">Action Patterns</span></a> -
|
||||
<span class="sectionpurpose">Compiling APs.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="5-gng.html">
|
||||
<spon class="sectiontitle">Going</span></a> -
|
||||
<span class="sectionpurpose">Tweaks to compiling APs for the going action.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -4165,7 +4165,6 @@ only when resolving ambiguities, in (4A) above.
|
|||
|
||||
<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::validate_conditional_clause</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Validating conditional clause: $P\n"</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">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::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">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="2-dsh.html#SP8" class="function-link"><span class="function-syntax">Dash::check_condition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEVER_MATCH</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>
|
||||
|
@ -4208,7 +4207,6 @@ into treating it as such.
|
|||
<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>
|
||||
<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">"Validating parameter in action pattern: $P (%u)\n"</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">DontValidate</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>
|
||||
|
@ -4241,9 +4239,6 @@ into treating it as such.
|
|||
<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">DontValidate:</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="plain-syntax"> </span><span class="string-syntax">"Fails to validate for type-checking reasons: wanted %u, found %u\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_found</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">last_spec_failing_to_validate</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::duplicate</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">last_kind_failing_to_validate</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">last_kind_found_failing_to_validate</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kind_found</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<preform-nonterminal> internal nti 23 constraint (none) extremes [1, 1]
|
||||
|
||||
<if-start-of-paragraph> internal hits 1165/6388 nti 24 constraint (none) extremes [0, 0]
|
||||
<if-start-of-paragraph> internal hits 1170/6408 nti 24 constraint (none) extremes [0, 0]
|
||||
|
||||
<if-not-cap> internal hits 3873/7958 nti 25 constraint (none) extremes [0, 0]
|
||||
|
||||
|
@ -4728,7 +4728,7 @@
|
|||
twelfth
|
||||
constraint CS = {27} extremes [1, 1]
|
||||
|
||||
<cardinal-number> internal hits 200/22402 nti r0 constraint CS = {r0} extremes [1, 1]
|
||||
<cardinal-number> internal hits 200/22422 nti r0 constraint CS = {r0} extremes [1, 1]
|
||||
|
||||
<ordinal-number> internal nti r1 constraint CS = {r1} extremes [1, 1]
|
||||
|
||||
|
@ -4736,12 +4736,12 @@
|
|||
|
||||
<adjective-name> internal hits 0/258 nti 22 constraint (none) extremes [1, infinity)
|
||||
|
||||
<optional-definite-article> hits 36284/72568 nti 18 constraint (none) extremes [1, infinity)
|
||||
<optional-definite-article> hits 36283/72566 nti 18 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<definite-article> {...}
|
||||
(hits 7821/36284) (matched long text) constraint (none) extremes [2, infinity)
|
||||
(hits 7821/36283) (matched long text) constraint (none) extremes [2, infinity)
|
||||
{...}
|
||||
(hits 28463/28463) (matched long text) constraint (none) extremes [1, infinity)
|
||||
(hits 28462/28462) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<optional-indefinite-article> nti 19 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -4750,21 +4750,21 @@
|
|||
{...}
|
||||
constraint (none) extremes [1, infinity)
|
||||
|
||||
<optional-article> hits 82856/165712 nti 20 constraint (none) extremes [1, infinity)
|
||||
<optional-article> hits 82853/165706 nti 20 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<article> {...}
|
||||
(hits 16066/47391) (matched long text) constraint (none) extremes [2, infinity)
|
||||
(hits 16065/47390) (matched long text) constraint (none) extremes [2, infinity)
|
||||
{...}
|
||||
(hits 66790/66790) (matched long text) constraint (none) extremes [1, infinity)
|
||||
(hits 66788/66788) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<compulsory-article> nti 21 constraint (none) extremes [2, infinity)
|
||||
English:
|
||||
<article> {...}
|
||||
constraint (none) extremes [2, infinity)
|
||||
|
||||
<article> internal hits 16517/98332 nti r2 constraint (none) extremes [1, 1]
|
||||
<article> internal hits 16515/98328 nti r2 constraint (none) extremes [1, 1]
|
||||
|
||||
<definite-article> internal hits 20294/236390 nti r2 constraint (none) extremes [1, 1]
|
||||
<definite-article> internal hits 20294/236382 nti r2 constraint (none) extremes [1, 1]
|
||||
|
||||
<indefinite-article> internal hits 2012/40436 nti r2 constraint (none) extremes [1, 1]
|
||||
|
||||
|
@ -4917,7 +4917,7 @@
|
|||
|
||||
<negated-noncopular-verb-present> internal hits 1/8288 nti 8 constraint FS = {8} extremes [1, infinity)
|
||||
|
||||
<universal-verb> internal hits 0/1486 nti 9 constraint FS = {9} extremes [1, infinity)
|
||||
<universal-verb> internal hits 0/1478 nti 9 constraint FS = {9} extremes [1, infinity)
|
||||
|
||||
<negated-verb> internal nti 10 constraint FS = {10} extremes [1, infinity)
|
||||
|
||||
|
@ -5271,7 +5271,7 @@
|
|||
grammatical case
|
||||
(hits 1/1) (matched: 'grammatical case') constraint CS = {7} extremes [2, 2]
|
||||
|
||||
<if-parsing-phrase-tokens> internal hits 2474/41942 nti 31 constraint (none) extremes [0, 0]
|
||||
<if-parsing-phrase-tokens> internal hits 2474/41934 nti 31 constraint (none) extremes [0, 0]
|
||||
|
||||
<k-kind-for-template> internal hits 164/328 nti 6 constraint (none) extremes [1, infinity)
|
||||
|
||||
|
@ -5297,16 +5297,16 @@
|
|||
<k-kind>
|
||||
(hits 5/5) (matched: 'value of kind k') constraint (none) extremes [1, infinity)
|
||||
|
||||
<k-kind> hits 5788/103654 nti r5 constraint (none) extremes [1, infinity)
|
||||
<k-kind> hits 5786/103650 nti r5 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
( <k-kind> )
|
||||
(hits 0/2064) constraint DS = {r5} & CW = {r2, r5} extremes [3, infinity)
|
||||
^<if-parsing-phrase-tokens> <k-kind-variable>
|
||||
(hits 1589/11280) (matched: 'k') constraint CW = {r2, r5} extremes [1, infinity)
|
||||
(hits 1589/11278) (matched: 'k') constraint CW = {r2, r5} extremes [1, infinity)
|
||||
<if-parsing-phrase-tokens> <k-variable-definition>
|
||||
(hits 201/9691) (matched: 'sayable value of kind k') constraint CW = {r2, r5} extremes [1, infinity)
|
||||
(hits 201/9689) (matched: 'sayable value of kind k') constraint CW = {r2, r5} extremes [1, infinity)
|
||||
<k-base-kind>
|
||||
(hits 3637/9490) (matched: 'an ice cream cone') constraint CW = {r2, r5} extremes [1, infinity)
|
||||
(hits 3635/9488) (matched: 'an ice cream cone') constraint CW = {r2, r5} extremes [1, infinity)
|
||||
<k-irregular-kind-construction>
|
||||
(hits 2/16092) (matched: 'object-based rulebook') constraint DS = {r5} extremes [2, infinity)
|
||||
<k-kind-construction>
|
||||
|
@ -5326,7 +5326,7 @@
|
|||
<k-kind-of-kind> of kind <k-formal-variable>
|
||||
(hits 81/315) (matched: 'sayable value of kind k') constraint DS = {r5} & CW = {r2, r5} extremes [4, infinity)
|
||||
|
||||
<k-base-kind> internal hits 3637/18980 nti r5 constraint CW = {r2, r5} extremes [1, infinity)
|
||||
<k-base-kind> internal hits 3635/18976 nti r5 constraint CW = {r2, r5} extremes [1, infinity)
|
||||
|
||||
<k-irregular-kind-construction> hits 2/32184 nti r5 constraint DS = {r5} extremes [2, infinity)
|
||||
English:
|
||||
|
@ -5402,7 +5402,7 @@
|
|||
<k-kind>
|
||||
(hits 100/224) (matched: 'sayable value') constraint (none) extremes [1, infinity)
|
||||
|
||||
<k-kind-variable> internal hits 1589/20086 nti r5 constraint CW = {r2, r5} extremes [1, 1]
|
||||
<k-kind-variable> internal hits 1589/20082 nti r5 constraint CW = {r2, r5} extremes [1, 1]
|
||||
|
||||
<k-formal-variable> internal hits 220/1414 nti r5 constraint CW = {r2, r5} extremes [1, 1]
|
||||
|
||||
|
@ -5477,29 +5477,29 @@
|
|||
<dividing-sentence> hits 199/10188 nti 11 constraint DW = {11, 12} extremes [2, infinity)
|
||||
English:
|
||||
<if-start-of-paragraph> <heading>
|
||||
(hits 191/3180) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
(hits 191/3190) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
<extension-end-marker-sentence>
|
||||
(hits 8/3533) (matched long text) constraint DS = {12} extremes [3, infinity)
|
||||
(hits 8/3516) (matched long text) constraint DS = {12} extremes [3, infinity)
|
||||
|
||||
<heading> hits 191/2302 nti 11 constraint DS = {11} extremes [2, infinity)
|
||||
<heading> hits 191/2312 nti 11 constraint DS = {11} extremes [2, infinity)
|
||||
English:
|
||||
volume {...}
|
||||
(hits 6/1151) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
(hits 6/1156) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
book {...}
|
||||
(hits 0/1145) constraint DS = {11} extremes [2, infinity)
|
||||
(hits 0/1150) constraint DS = {11} extremes [2, infinity)
|
||||
part {...}
|
||||
(hits 14/1145) (matched: 'part two - the physical world model') constraint DS = {11} extremes [2, infinity)
|
||||
(hits 14/1150) (matched: 'part two - the physical world model') constraint DS = {11} extremes [2, infinity)
|
||||
chapter {...}
|
||||
(hits 20/1131) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
(hits 20/1136) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
section {...}
|
||||
(hits 151/1111) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
(hits 151/1116) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
|
||||
<extension-end-marker-sentence> hits 8/7066 nti 12 constraint DS = {12} extremes [3, infinity)
|
||||
<extension-end-marker-sentence> hits 8/7032 nti 12 constraint DS = {12} extremes [3, infinity)
|
||||
English:
|
||||
{...} begin/begins here
|
||||
(hits 4/3533) (matched long text) constraint DS = {12} extremes [3, infinity)
|
||||
(hits 4/3516) (matched long text) constraint DS = {12} extremes [3, infinity)
|
||||
{...} end/ends here
|
||||
(hits 4/3529) (matched: 'the standard rules end here') constraint DS = {12} extremes [3, infinity)
|
||||
(hits 4/3512) (matched: 'the standard rules end here') constraint DS = {12} extremes [3, infinity)
|
||||
|
||||
<structural-sentence> hits 32/12958 nti 14 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -5722,9 +5722,9 @@
|
|||
<other-significant-phrase> hits 756/14584 nti 7 constraint DS = {7} extremes [2, infinity)
|
||||
English:
|
||||
say {...}
|
||||
(hits 584/3129) (matched: 'say run paragraph on with special look spacing') constraint DS = {7} extremes [2, infinity)
|
||||
(hits 584/3126) (matched: 'say run paragraph on with special look spacing') constraint DS = {7} extremes [2, infinity)
|
||||
now {...}
|
||||
(hits 172/2545) (matched long text) constraint DS = {7} extremes [2, infinity)
|
||||
(hits 172/2542) (matched long text) constraint DS = {7} extremes [2, infinity)
|
||||
|
||||
<phrase-with-comma-notation> hits 2306/7528 nti 8 constraint DS = {8} extremes [3, infinity)
|
||||
English:
|
||||
|
@ -5734,9 +5734,9 @@
|
|||
<instead-keyword> hits 30/9858 nti 9 constraint DS = {9} extremes [2, infinity)
|
||||
English:
|
||||
instead {...}
|
||||
(hits 0/1698) constraint DS = {9} extremes [2, infinity)
|
||||
(hits 0/1697) constraint DS = {9} extremes [2, infinity)
|
||||
{...} instead
|
||||
(hits 30/1698) (matched long text) constraint DS = {9} extremes [2, infinity)
|
||||
(hits 30/1697) (matched long text) constraint DS = {9} extremes [2, infinity)
|
||||
|
||||
<phrase-beginning-block> hits 0/880 nti 10 constraint DS = {10} extremes [2, infinity)
|
||||
English:
|
||||
|
@ -7016,7 +7016,7 @@
|
|||
<cardinal-number>
|
||||
(hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]
|
||||
minus <cardinal-number>
|
||||
(hits 0/1872) constraint DS = {12} extremes [2, 2]
|
||||
(hits 0/1864) constraint DS = {12} extremes [2, 2]
|
||||
<quoted-text> ( <response-letter> )
|
||||
(hits 273/840) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {12} extremes [4, 4]
|
||||
<quoted-text>
|
||||
|
@ -7031,7 +7031,7 @@
|
|||
<s-literal-list>
|
||||
(hits 0/1468) constraint DS = {8} extremes [2, infinity)
|
||||
unicode <s-unicode-character>
|
||||
(hits 0/4232) constraint DS = {12} extremes [2, infinity)
|
||||
(hits 0/4220) constraint DS = {12} extremes [2, infinity)
|
||||
<s-literal-time>
|
||||
(hits 0/2190) constraint DW = {9, 10, 11} extremes [2, 5]
|
||||
<s-literal-unit-notation>
|
||||
|
@ -7068,27 +7068,27 @@
|
|||
<s-literal-time> hits 0/4380 nti 11 constraint DW = {9, 10, 11} extremes [2, 5]
|
||||
English:
|
||||
minus <elapsed-time>
|
||||
(hits 0/802) constraint DS = {9, 11} extremes [3, 5]
|
||||
(hits 0/796) constraint DS = {9, 11} extremes [3, 5]
|
||||
<elapsed-time>
|
||||
(hits 0/864) constraint DS = {9} extremes [2, 4]
|
||||
(hits 0/854) constraint DS = {9} extremes [2, 4]
|
||||
<clock-time>
|
||||
(hits 0/242) constraint DS = {10} extremes [2, 2]
|
||||
(hits 0/252) constraint DS = {10} extremes [2, 2]
|
||||
|
||||
<elapsed-time> hits 0/1728 nti 9 constraint DS = {9} extremes [2, 4]
|
||||
<elapsed-time> hits 0/1708 nti 9 constraint DS = {9} extremes [2, 4]
|
||||
English:
|
||||
<cardinal-number> hour/hours
|
||||
(hits 0/189) constraint DS = {9} extremes [2, 2]
|
||||
(hits 0/197) constraint DS = {9} extremes [2, 2]
|
||||
<cardinal-number> minute/minutes
|
||||
(hits 0/189) constraint DS = {9} extremes [2, 2]
|
||||
(hits 0/197) constraint DS = {9} extremes [2, 2]
|
||||
<cardinal-number> hour/hours <cardinal-number> minute/minutes
|
||||
(hits 0/392) constraint DS = {9} extremes [4, 4]
|
||||
(hits 0/374) constraint DS = {9} extremes [4, 4]
|
||||
|
||||
<clock-time> hits 0/484 nti 31 constraint DS = {10} extremes [2, 2]
|
||||
<clock-time> hits 0/504 nti 31 constraint DS = {10} extremes [2, 2]
|
||||
English:
|
||||
<cardinal-number> <am-pm>
|
||||
(hits 0/242) constraint DS = {10} extremes [2, 2]
|
||||
(hits 0/252) constraint DS = {10} extremes [2, 2]
|
||||
<digital-clock-time> <am-pm>
|
||||
(hits 0/242) constraint DS = {10} extremes [2, 2]
|
||||
(hits 0/252) constraint DS = {10} extremes [2, 2]
|
||||
|
||||
<am-pm> nti 10 constraint CS = {10} extremes [1, 1]
|
||||
English:
|
||||
|
@ -7097,7 +7097,7 @@
|
|||
pm
|
||||
constraint CS = {10} extremes [1, 1]
|
||||
|
||||
<digital-clock-time> internal hits 0/484 nti 6 constraint (none) extremes [1, 1]
|
||||
<digital-clock-time> internal hits 0/504 nti 6 constraint (none) extremes [1, 1]
|
||||
|
||||
<continental-clock-time> internal nti 7 constraint (none) extremes [1, 1]
|
||||
|
||||
|
@ -7152,16 +7152,16 @@
|
|||
|
||||
<s-non-action-condition> internal hits 4/8 nti 15 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-type-expression> internal hits 1964/5228 nti 16 constraint (none) extremes [1, infinity)
|
||||
<s-type-expression> internal hits 1962/5224 nti 16 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-descriptive-type-expression> internal hits 1272/3058 nti 17 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-phrase-token-type> internal hits 529/1072 nti 18 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-type-expression-or-value> hits 243/1728 nti 19 constraint (none) extremes [1, infinity)
|
||||
<s-type-expression-or-value> hits 241/1724 nti 19 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<s-type-expression>
|
||||
(hits 191/794) (matched long text) constraint (none) extremes [1, infinity)
|
||||
(hits 189/792) (matched long text) constraint (none) extremes [1, infinity)
|
||||
<s-value>
|
||||
(hits 52/603) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
|
@ -7370,21 +7370,21 @@
|
|||
|
||||
<s-specifying-noun> internal hits 288/62770 nti 21 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-type-expression-uncached> hits 1949/4834 nti 22 constraint (none) extremes [1, infinity)
|
||||
<s-type-expression-uncached> hits 1947/4830 nti 22 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<article> <s-type-expression-unarticled>
|
||||
(hits 119/399) (matched long text) constraint (none) extremes [2, infinity)
|
||||
(hits 118/398) (matched long text) constraint (none) extremes [2, infinity)
|
||||
<s-type-expression-unarticled>
|
||||
(hits 1830/2298) (matched long text) constraint (none) extremes [1, infinity)
|
||||
(hits 1829/2297) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-type-expression-unarticled> hits 3127/7784 nti 31 constraint (none) extremes [1, infinity)
|
||||
<s-type-expression-unarticled> hits 3125/7780 nti 31 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<s-variable-scope> variable/variables
|
||||
(hits 2/460) (matched: 'text variables') constraint DS = {31} extremes [2, infinity)
|
||||
<s-variable-scope> that/which vary/varies
|
||||
(hits 59/374) (matched: 'action name based rule producing nothing that varies') constraint DS = {31} extremes [3, infinity)
|
||||
<k-kind>
|
||||
(hits 2443/3831) (matched long text) constraint (none) extremes [1, infinity)
|
||||
(hits 2441/3829) (matched long text) constraint (none) extremes [1, infinity)
|
||||
<s-literal>
|
||||
(hits 221/1388) (matched: 'Represents geographical locations, both indoor
|
||||
and outdoor, which are not necessarily areas in a building. A player in one
|
||||
|
@ -7520,11 +7520,11 @@
|
|||
<s-variable>
|
||||
(hits 173/565) (matched: 'the second noun') constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-local-variable> internal hits 1137/27364 nti 6 constraint (none) extremes [1, infinity)
|
||||
<s-local-variable> internal hits 1137/27360 nti 6 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-stacked-variable> internal hits 897/18706 nti 7 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-global-variable> internal hits 2296/19730 nti 8 constraint (none) extremes [1, infinity)
|
||||
<s-global-variable> internal hits 2296/19726 nti 8 constraint (none) extremes [1, infinity)
|
||||
|
||||
<property-of-shape> hits 105/18392 nti 7 constraint DS = {7} extremes [3, infinity)
|
||||
English:
|
||||
|
@ -7563,7 +7563,7 @@
|
|||
<s-general-verb-tail> hits 2149/6658 nti 13 constraint (none) extremes [2, infinity)
|
||||
English:
|
||||
<universal-verb> <s-universal-term>
|
||||
(hits 0/670) constraint DS = {29} & FS = {9} extremes [4, infinity)
|
||||
(hits 0/666) constraint DS = {29} & FS = {9} extremes [4, infinity)
|
||||
<nonimperative-verb> <permitted-preposition> <s-noun-phrase>
|
||||
(hits 224/1827) (matched long text) constraint DS = {14} & FS = {6} extremes [3, infinity)
|
||||
<nonimperative-verb> <s-noun-phrase>
|
||||
|
@ -7667,7 +7667,7 @@
|
|||
<s-past-action-pattern-as-condition>
|
||||
(hits 0/1091) constraint DS = {11} extremes [3, infinity)
|
||||
<s-past-action-pattern-as-negated-condition>
|
||||
(hits 0/882) constraint DS = {12} extremes [4, infinity)
|
||||
(hits 0/880) constraint DS = {12} extremes [4, infinity)
|
||||
<s-action-pattern-as-condition>
|
||||
(hits 28/1373) (matched long text) constraint (none) extremes [1, infinity)
|
||||
<s-action-pattern-as-negated-condition>
|
||||
|
@ -8276,23 +8276,23 @@
|
|||
<to-preamble> hits 400/800 nti 11 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<to-preamble> ( arithmetic operation <cardinal-number> )
|
||||
(hits 16/344) (matched long text) constraint DS = {11} extremes [6, infinity)
|
||||
(hits 16/345) (matched long text) constraint DS = {11} extremes [6, infinity)
|
||||
<to-preamble> ( assignment operation )
|
||||
(hits 6/337) (matched long text) constraint DS = {11} extremes [5, infinity)
|
||||
(hits 6/338) (matched long text) constraint DS = {11} extremes [5, infinity)
|
||||
{let ... be given by ...}
|
||||
(hits 2/322) (matched long text) constraint DS = {11} extremes [6, infinity)
|
||||
(hits 2/323) (matched long text) constraint DS = {11} extremes [6, infinity)
|
||||
{let ...}
|
||||
(hits 4/345) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
(hits 4/346) (matched long text) constraint DS = {11} extremes [2, infinity)
|
||||
{...} -- end
|
||||
(hits 0/339) constraint DS = {11} extremes [3, infinity)
|
||||
(hits 0/340) constraint DS = {11} extremes [3, infinity)
|
||||
{...} -- end conditional
|
||||
(hits 3/334) (matched long text) constraint DS = {11} extremes [4, infinity)
|
||||
(hits 3/335) (matched long text) constraint DS = {11} extremes [4, infinity)
|
||||
{...} -- end loop
|
||||
(hits 9/331) (matched long text) constraint DS = {11} extremes [4, infinity)
|
||||
(hits 9/332) (matched long text) constraint DS = {11} extremes [4, infinity)
|
||||
{...} -- in loop
|
||||
(hits 2/322) (matched: 'break -- in loop') constraint DS = {11} extremes [4, infinity)
|
||||
(hits 2/323) (matched: 'break -- in loop') constraint DS = {11} extremes [4, infinity)
|
||||
{...} -- in {###}
|
||||
(hits 0/320) constraint DS = {11} extremes [4, infinity)
|
||||
(hits 0/321) constraint DS = {11} extremes [4, infinity)
|
||||
{...}
|
||||
(hits 358/358) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
|
@ -9199,12 +9199,12 @@
|
|||
English:
|
||||
<named-action-pattern>
|
||||
(hits 0/703) constraint (none) extremes [1, infinity)
|
||||
<named-action-pattern-with-tail>
|
||||
<named-action-pattern-tailed>
|
||||
(hits 0/703) constraint (none) extremes [1, infinity)
|
||||
<anl-entry-with-action>
|
||||
(hits 595/703) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<named-action-pattern-with-tail> internal hits 0/1406 nti 29 constraint (none) extremes [1, infinity)
|
||||
<named-action-pattern-tailed> internal hits 0/1406 nti 29 constraint (none) extremes [1, infinity)
|
||||
|
||||
<anl-entry-with-action> internal hits 595/1406 nti 30 constraint (none) extremes [1, infinity)
|
||||
|
||||
|
@ -9226,34 +9226,22 @@
|
|||
|
||||
<clause-opening> internal hits 0/662 nti 31 constraint (none) extremes [1, infinity)
|
||||
|
||||
<going-action> hits 1/180 nti 7 constraint CS = {7} extremes [1, 1]
|
||||
English:
|
||||
going
|
||||
(hits 1/1) (matched: 'going') constraint CS = {7} extremes [1, 1]
|
||||
|
||||
<going-action-irregular-operand> hits 0/16 nti 8 constraint CS = {8} extremes [1, 1]
|
||||
English:
|
||||
nowhere
|
||||
constraint CS = {8} extremes [1, 1]
|
||||
somewhere
|
||||
constraint CS = {8} extremes [1, 1]
|
||||
|
||||
<if-can-omit-trying> internal hits 1197/31612 nti 6 constraint (none) extremes [0, 0]
|
||||
|
||||
<if-nonconstant-action-context> internal hits 1272/2544 nti 7 constraint (none) extremes [0, 0]
|
||||
<if-nonconstant-action-context> internal hits 1268/2536 nti 7 constraint (none) extremes [0, 0]
|
||||
|
||||
<s-ap-parameter> hits 302/1272 nti 8 constraint (none) extremes [1, infinity)
|
||||
<s-ap-parameter> hits 300/1268 nti 8 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
^<if-nonconstant-action-context> <s-local-variable>
|
||||
(hits 0/636) constraint (none) extremes [1, infinity)
|
||||
(hits 0/634) constraint (none) extremes [1, infinity)
|
||||
^<if-nonconstant-action-context> <s-global-variable>
|
||||
(hits 0/636) constraint (none) extremes [1, infinity)
|
||||
(hits 0/634) constraint (none) extremes [1, infinity)
|
||||
<s-local-variable>
|
||||
(hits 25/636) (matched: 'the current working sack') constraint (none) extremes [1, infinity)
|
||||
(hits 25/634) (matched: 'the current working sack') constraint (none) extremes [1, infinity)
|
||||
<s-global-variable>
|
||||
(hits 42/611) (matched: 'the second noun') constraint (none) extremes [1, infinity)
|
||||
(hits 42/609) (matched: 'the second noun') constraint (none) extremes [1, infinity)
|
||||
<s-type-expression-or-value>
|
||||
(hits 235/569) (matched long text) constraint (none) extremes [1, infinity)
|
||||
(hits 233/567) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-action-pattern-as-value> internal hits 3/19982 nti 9 constraint (none) extremes [1, infinity)
|
||||
|
||||
|
@ -9272,23 +9260,23 @@
|
|||
<action-pattern-past>
|
||||
(hits 0/1091) constraint DS = {11} extremes [3, infinity)
|
||||
|
||||
<s-past-action-pattern-as-negated-condition> hits 0/1764 nti 13 constraint DS = {12} extremes [4, infinity)
|
||||
<s-past-action-pattern-as-negated-condition> hits 0/1760 nti 13 constraint DS = {12} extremes [4, infinity)
|
||||
English:
|
||||
<action-pattern-past-negated>
|
||||
(hits 0/882) constraint DS = {12} extremes [4, infinity)
|
||||
(hits 0/880) constraint DS = {12} extremes [4, infinity)
|
||||
|
||||
<action-pattern> hits 556/21330 nti 7 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
asking <s-ap-parameter> to try <ap-three-present>
|
||||
(hits 0/1023) constraint DS = {7} extremes [5, infinity)
|
||||
<s-ap-parameter> trying <ap-three-present>
|
||||
(hits 23/2486) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
(hits 23/2484) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
an actor trying <ap-three-present>
|
||||
(hits 0/1828) constraint DS = {7} extremes [4, infinity)
|
||||
(hits 0/1826) constraint DS = {7} extremes [4, infinity)
|
||||
an actor <ap-three-present>
|
||||
(hits 408/2463) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
(hits 408/2461) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
trying <ap-three-present>
|
||||
(hits 0/3398) constraint DS = {7} extremes [2, infinity)
|
||||
(hits 0/3391) constraint DS = {7} extremes [2, infinity)
|
||||
<ap-three-present>
|
||||
(hits 60/10234) (matched long text) constraint (none) extremes [1, infinity)
|
||||
<actor-description> <ap-three-present>
|
||||
|
@ -9355,7 +9343,7 @@
|
|||
we have <ap-three-past>
|
||||
(hits 0/1091) constraint DS = {11} extremes [3, infinity)
|
||||
|
||||
<action-pattern-past-negated> hits 0/1764 nti 12 constraint DS = {12} extremes [4, infinity)
|
||||
<action-pattern-past-negated> hits 0/1760 nti 12 constraint DS = {12} extremes [4, infinity)
|
||||
English:
|
||||
we have not asked <s-ap-parameter> to try <ap-three-present>
|
||||
(hits 0/136) constraint DS = {12} extremes [8, infinity)
|
||||
|
@ -9368,7 +9356,7 @@
|
|||
we have not tried <ap-three-present>
|
||||
(hits 0/537) constraint DS = {12} extremes [5, infinity)
|
||||
we have not <ap-three-past>
|
||||
(hits 0/882) constraint DS = {12} extremes [4, infinity)
|
||||
(hits 0/880) constraint DS = {12} extremes [4, infinity)
|
||||
|
||||
<actor-description> internal hits 94/13090 nti 14 constraint (none) extremes [1, infinity)
|
||||
|
||||
|
@ -9376,44 +9364,56 @@
|
|||
|
||||
<ap-three-past> internal nti 16 constraint (none) extremes [1, infinity)
|
||||
|
||||
<ap-four-pronominal> hits 0/1390 nti 9 constraint CS = {9} extremes [2, 2]
|
||||
<ap-four-pronominal> hits 0/1390 nti 7 constraint CS = {7} extremes [2, 2]
|
||||
English:
|
||||
doing it
|
||||
constraint CS = {9} extremes [2, 2]
|
||||
constraint CS = {7} extremes [2, 2]
|
||||
|
||||
<ap-five> hits 584/1390 nti 10 constraint (none) extremes [1, infinity)
|
||||
<ap-five> hits 584/1390 nti 8 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
<ap-six> when/while <ap-five-condition>
|
||||
(hits 11/129) (matched long text) constraint DS = {10} extremes [3, infinity)
|
||||
(hits 11/116) (matched long text) constraint DS = {8} extremes [3, infinity)
|
||||
<ap-six>
|
||||
(hits 573/684) (matched long text) constraint (none) extremes [1, infinity)
|
||||
{...} when/while <ap-five-condition>
|
||||
(hits 0/44) constraint DS = {10} extremes [3, infinity)
|
||||
(hits 0/37) constraint DS = {8} extremes [3, infinity)
|
||||
{...} when/while {...}
|
||||
(hits 0/44) constraint DS = {10} extremes [3, infinity)
|
||||
(hits 0/37) constraint DS = {8} extremes [3, infinity)
|
||||
|
||||
<ap-five-condition> internal hits 19/38 nti 17 constraint (none) extremes [1, infinity)
|
||||
|
||||
<ap-six> internal hits 584/1406 nti 18 constraint (none) extremes [1, infinity)
|
||||
|
||||
<action-operand> hits 202/410 nti 11 constraint (none) extremes [1, infinity)
|
||||
<action-operand> hits 200/406 nti 9 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
something/anything
|
||||
(hits 79/79) (matched: 'something') constraint CS = {11} extremes [1, 1]
|
||||
(hits 79/79) (matched: 'something') constraint CS = {9} extremes [1, 1]
|
||||
something/anything else
|
||||
constraint CS = {11} extremes [2, 2]
|
||||
(hits 0/1) constraint CS = {9} extremes [2, 2]
|
||||
<s-ap-parameter>
|
||||
(hits 123/126) (matched long text) constraint (none) extremes [1, infinity)
|
||||
(hits 121/124) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
<understanding-action-irregular-operand> hits 5/10 nti 12 constraint CS = {12} extremes [1, 1]
|
||||
<understanding-action-irregular-operand> hits 5/10 nti 10 constraint CS = {10} extremes [1, 1]
|
||||
English:
|
||||
something/anything
|
||||
(hits 4/5) (matched: 'something') constraint CS = {12} extremes [1, 1]
|
||||
(hits 4/5) (matched: 'something') constraint CS = {10} extremes [1, 1]
|
||||
it
|
||||
(hits 1/1) (matched: 'it') constraint CS = {12} extremes [1, 1]
|
||||
(hits 1/1) (matched: 'it') constraint CS = {10} extremes [1, 1]
|
||||
|
||||
<named-action-pattern> internal hits 0/4000 nti 19 constraint (none) extremes [1, infinity)
|
||||
|
||||
<going-action> hits 1/180 nti 11 constraint CS = {11} extremes [1, 1]
|
||||
English:
|
||||
going
|
||||
(hits 1/1) (matched: 'going') constraint CS = {11} extremes [1, 1]
|
||||
|
||||
<going-action-irregular-operand> hits 0/16 nti 12 constraint CS = {12} extremes [1, 1]
|
||||
English:
|
||||
nowhere
|
||||
(hits 0/3) constraint CS = {12} extremes [1, 1]
|
||||
somewhere
|
||||
(hits 0/3) constraint CS = {12} extremes [1, 1]
|
||||
|
||||
<notable-parsing-variables> hits 21/186 nti 13 constraint DS = {13} extremes [1, infinity)
|
||||
English:
|
||||
<k-kind> understood
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
Total memory consumption was 259375K = 253 MB
|
||||
|
||||
62.6% was used for 1340373 objects, in 278899 frames in 203 x 800K = 162400K = 158 MB:
|
||||
62.6% was used for 1340372 objects, in 278898 frames in 203 x 800K = 162400K = 158 MB:
|
||||
|
||||
9.7% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||
5.5% text_stream_array 2595 x 100 = 259500 objects, 14615040 bytes
|
||||
3.9% parse_node 130241 objects, 10419280 bytes
|
||||
3.9% parse_node 130236 objects, 10418880 bytes
|
||||
2.7% verb_conjugation 160 objects, 7425280 bytes
|
||||
2.6% parse_node_annotation_array 432 x 500 = 216000 objects, 6925824 bytes
|
||||
2.4% linked_list 11789 objects, 6601840 bytes
|
||||
2.4% linked_list 11793 objects, 6604080 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.1% map_data 670 objects, 3178480 bytes
|
||||
|
@ -247,5 +247,5 @@ Total memory consumption was 259375K = 253 MB
|
|||
---- emitter array storage 12320 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
20.2% was overhead - 53889776 bytes = 52626K = 51 MB
|
||||
20.2% was overhead - 53887936 bytes = 52624K = 51 MB
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
(@1)<cardinal-number>=1
|
||||
(hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]
|
||||
(@1)minus (@2)<cardinal-number>=1
|
||||
(hits 0/1872) constraint DS = {12} extremes [2, 2]
|
||||
(hits 0/1864) constraint DS = {12} extremes [2, 2]
|
||||
(@1)<quoted-text>=1 (@2)( (@3)<response-letter>=2 (@4))
|
||||
(hits 273/840) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {12} extremes [4, 4]
|
||||
(@1)<quoted-text>=1
|
||||
|
@ -18,7 +18,7 @@
|
|||
<s-literal-list>=1
|
||||
(hits 0/1468) constraint DS = {8} extremes [2, infinity)
|
||||
(@1)unicode <s-unicode-character>=1
|
||||
(hits 0/4232) constraint DS = {12} extremes [2, infinity)
|
||||
(hits 0/4220) constraint DS = {12} extremes [2, infinity)
|
||||
<s-literal-time>=1
|
||||
(hits 0/2190) constraint DW = {9, 10, 11} extremes [2, 5]
|
||||
<s-literal-unit-notation>=1
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
100.0% in inform7 run
|
||||
67.1% in compilation to Inter
|
||||
25.9% in //Phrases::Manager::compile_first_block//
|
||||
8.4% in //Phrases::Manager::compile_as_needed//
|
||||
6.9% in //Strings::compile_responses//
|
||||
6.2% in //InferenceSubjects::emit_all//
|
||||
4.2% in //MajorNodes::pre_pass//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
67.0% in compilation to Inter
|
||||
25.8% in //Phrases::Manager::compile_first_block//
|
||||
8.5% in //Phrases::Manager::compile_as_needed//
|
||||
7.1% in //Strings::compile_responses//
|
||||
6.1% in //InferenceSubjects::emit_all//
|
||||
4.1% in //MajorNodes::pre_pass//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
1.8% in //Phrases::Manager::rulebooks_array//
|
||||
1.0% in //RTVerbs::ConjugateVerb//
|
||||
0.8% in //Phrases::Manager::traverse//
|
||||
0.5% in //Phrases::Manager::compile_rulebooks//
|
||||
0.5% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.9% in //Phrases::Manager::traverse//
|
||||
0.9% in //RTVerbs::ConjugateVerb//
|
||||
0.5% in //World::stage_V//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
0.3% in //Phrases::Manager::compile_rulebooks//
|
||||
0.3% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.3% in //RTRelations::compile_defined_relations//
|
||||
0.1% in //PL::Parsing::Verbs::compile_all//
|
||||
0.1% in //RTKinds::compile_data_type_support_routines//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
3.4% not specifically accounted for
|
||||
30.5% in running Inter pipeline
|
||||
10.7% in step preparation
|
||||
9.7% in inter step 2/12: link
|
||||
7.2% in inter step 12/12: generate inform6 -> auto.inf
|
||||
3.3% not specifically accounted for
|
||||
30.6% in running Inter pipeline
|
||||
9.8% in step preparation
|
||||
9.6% in inter step 2/12: link
|
||||
7.1% in inter step 12/12: generate inform6 -> auto.inf
|
||||
0.3% in inter step 9/12: make-identifiers-unique
|
||||
0.1% in inter step 10/12: reconcile-verbs
|
||||
0.1% in inter step 11/12: eliminate-redundant-labels
|
||||
|
@ -32,6 +32,6 @@
|
|||
0.1% in inter step 6/12: assimilate
|
||||
0.1% in inter step 7/12: resolve-external-symbols
|
||||
0.1% in inter step 8/12: inspect-plugs
|
||||
1.2% not specifically accounted for
|
||||
2.4% not specifically accounted for
|
||||
2.0% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -422,9 +422,12 @@ int PluginCalls::set_subkind_notify(kind *sub, kind *super) {
|
|||
PLUGINS_CALL(SET_SUBKIND_NOTIFY_PLUG, sub, super);
|
||||
}
|
||||
|
||||
@h Influencing if.
|
||||
If the actions plugin is not active, then the following will never be called.
|
||||
It warn plugins that a new action name has been created.
|
||||
@h Influencing the actions plugin.
|
||||
We now have a whole run of functions called only by the actions plugin, and
|
||||
therefore only when it is active.
|
||||
|
||||
Called from //if: Actions Plugin// to signal that a new action has been
|
||||
created. For example, the going plugin uses this to spot the arrival of "going".
|
||||
|
||||
@e NEW_ACTION_NOTIFY_PLUG
|
||||
|
||||
|
@ -433,9 +436,10 @@ int PluginCalls::new_action_notify(action_name *an) {
|
|||
PLUGINS_CALL(NEW_ACTION_NOTIFY_PLUG, an);
|
||||
}
|
||||
|
||||
@ If the actions plugin is not active, then the following will never be called.
|
||||
It invites plugins to change the action pattern clause ID associated with a
|
||||
given action variable.
|
||||
@ Called from //if: Action Pattern Clauses// to invite plugins to change the
|
||||
action pattern clause ID associated with a given action variable. This may be
|
||||
needed in order to cross-reference between multiple such clauses, as with
|
||||
the going action variables.
|
||||
|
||||
@e DIVERT_AP_CLAUSE_PLUG
|
||||
|
||||
|
@ -445,9 +449,8 @@ int PluginCalls::divert_AP_clause_ID(stacked_variable *stv, int *id) {
|
|||
PLUGINS_CALL(DIVERT_AP_CLAUSE_PLUG, stv, id);
|
||||
}
|
||||
|
||||
@ If the actions plugin is not active, then the following will never be called.
|
||||
It should print a helpful name for the debugging log for the clause ID |C|,
|
||||
if |C| is a new clause ID created by the plugin.
|
||||
@ Called from //if: Action Pattern Clauses// to ask plugins to print a helpful
|
||||
name for the debugging log for any new clause ID |C| which they have created.
|
||||
|
||||
@e WRITE_AP_CLAUSE_ID_PLUG
|
||||
|
||||
|
@ -456,9 +459,9 @@ int PluginCalls::write_AP_clause_ID(OUTPUT_STREAM, int C) {
|
|||
PLUGINS_CALL(WRITE_AP_CLAUSE_ID_PLUG, OUT, C);
|
||||
}
|
||||
|
||||
@ If the actions plugin is not active, then the following will never be called.
|
||||
It should return a |*_APCA| aspect for the clause ID |C|, if |C| is a new
|
||||
clause ID created by the plugin.
|
||||
@ Called from //if: Action Pattern Clauses// to ask for the |*_APCA| aspect
|
||||
for the clause ID |C|, where |C| is a new clause ID created by the plugin. If
|
||||
this is not given, then the aspect will be |MISC_APCA|.
|
||||
|
||||
@e ASPECT_OF_AP_CLAUSE_ID_PLUG
|
||||
|
||||
|
@ -467,13 +470,19 @@ int PluginCalls::aspect_of_AP_clause_ID(int C, int *A) {
|
|||
PLUGINS_CALL(ASPECT_OF_AP_CLAUSE_ID_PLUG, C, A);
|
||||
}
|
||||
|
||||
@ If the actions plugin is not active, then the following will never be called.
|
||||
If it recognises the patterns as ways to describe an action it knows about,
|
||||
then the plugin can choose to take the decision, storing either 1 or -1 in
|
||||
@ Called from //if: Action Pattern Clauses// to give plugins a chance to
|
||||
decide which AP is more specific, on the basis of the extra clauses defined
|
||||
in the plugin.
|
||||
|
||||
If the plugin recognises the patterns as ways to describe an action it knows
|
||||
about, it can choose to take the decision, storing either 1 or -1 in
|
||||
|rv|, and returning |TRUE|. If it instead stores 0 in |rv|, it can also
|
||||
choose to set |ignore_in|, which tells the usual machinery not to judge on the
|
||||
basis of the |[in: ...]| clause in the pattern.
|
||||
|
||||
If the plugin sees nothing relevant about the patterns, it should return |FALSE|
|
||||
to let the usual machinery take its course.
|
||||
|
||||
@e COMPARE_AP_SPECIFICITY_PLUG
|
||||
|
||||
=
|
||||
|
@ -482,16 +491,50 @@ int PluginCalls::compare_AP_specificity(action_pattern *ap1, action_pattern *ap2
|
|||
PLUGINS_CALL(COMPARE_AP_SPECIFICITY_PLUG, ap1, ap2, rv, ignore_in);
|
||||
}
|
||||
|
||||
@
|
||||
@ Called from //if: Action Pattern Clauses// to notify plugins that a clause
|
||||
matching an action variable has just been added to an action pattern.
|
||||
|
||||
@e NEW_AP_CLAUSE_PLUG
|
||||
|
||||
=
|
||||
int PluginCalls::new_AP_clause(action_pattern *ap, ap_clause *apoc) {
|
||||
int PluginCalls::new_action_variable_clause(action_pattern *ap, ap_clause *apoc) {
|
||||
PLUGINS_CALL(NEW_AP_CLAUSE_PLUG, ap, apoc);
|
||||
}
|
||||
|
||||
@
|
||||
@ Called from //if: Parse Clauses// to give plugins a chance to intervene in
|
||||
the normal process of evaluating the meaning of text in an action pattern
|
||||
clause: for example, in parsing "going nowhere", the going plugin uses this
|
||||
to detect that the |NOUN_AP_CLAUSE|, with text "nowhere", should not be parsed
|
||||
normally. What it does it to set a bit in the bitmap |bits|, which it will pick
|
||||
up again and act upon when reacting to |ACT_ON_ANL_ENTRY_OPTIONS_PLUG|.
|
||||
|
||||
If the plugin does not set a bit in |bits|, the normal machinery parses the
|
||||
text of the clause in the normal way.
|
||||
|
||||
@e PARSE_AP_CLAUSE_PLUG
|
||||
|
||||
int PluginCalls::parse_AP_clause(action_name *an, anl_clause *c, int *bits) {
|
||||
PLUGINS_CALL(PARSE_AP_CLAUSE_PLUG, an, c, bits);
|
||||
}
|
||||
|
||||
@ Called from //if: Parse Clauses// to give plugins a chance to intervene in
|
||||
the type-checking process for a clause. Ordinarily, this would just check that
|
||||
the contents have the right kind: if matching an action variable of kind |K|
|
||||
then it must be a value compatible with |K| or a description of such.
|
||||
|
||||
By returning |TRUE|, a plugin can instead take responsibility for the decision
|
||||
itself, bypassing that. The |outcome| should then be set |TRUE| (it's valid)
|
||||
or |FALSE| (it isn't).
|
||||
|
||||
@e VALIDATE_AP_CLAUSE_PLUG
|
||||
|
||||
=
|
||||
int PluginCalls::validate_AP_clause(action_name *an, anl_clause *c, int *outcome) {
|
||||
PLUGINS_CALL(VALIDATE_AP_CLAUSE_PLUG, an, c, outcome);
|
||||
}
|
||||
|
||||
@ Called from //if: Parse Clauses// to deal with the options bitmap set
|
||||
previously by a |PARSE_AP_CLAUSE_PLUG| call: see above.
|
||||
|
||||
@e ACT_ON_ANL_ENTRY_OPTIONS_PLUG
|
||||
|
||||
|
@ -500,6 +543,29 @@ int PluginCalls::act_on_ANL_entry_options(anl_entry *entry, int entry_options, i
|
|||
PLUGINS_CALL(ACT_ON_ANL_ENTRY_OPTIONS_PLUG, entry, entry_options, fail);
|
||||
}
|
||||
|
||||
@ Called from //runtime: Action Patterns// when assembling the requirement
|
||||
clauses for compiling a mattern match; this gives plugins a chance to act
|
||||
extra stipulations, which are not explicit in clauses already in the pattern.
|
||||
|
||||
@e SET_PATTERN_MATCH_REQUIREMENTS_PLUG
|
||||
|
||||
=
|
||||
int PluginCalls::set_pattern_match_requirements(action_pattern *ap, int *cpm,
|
||||
int needed[MAX_CPM_CLAUSES], ap_clause *needed_apoc[MAX_CPM_CLAUSES]) {
|
||||
PLUGINS_CALL(SET_PATTERN_MATCH_REQUIREMENTS_PLUG, ap, cpm, needed, needed_apoc);
|
||||
}
|
||||
|
||||
@ Called from //runtime: Action Patterns// when compiling any additional
|
||||
requirements set by |SET_PATTERN_MATCH_REQUIREMENTS_PLUG|.
|
||||
|
||||
@e COMPILE_PATTERN_MATCH_CLAUSE_PLUG
|
||||
|
||||
=
|
||||
int PluginCalls::compile_pattern_match_clause(value_holster *VH, action_pattern *ap,
|
||||
int cpmc) {
|
||||
PLUGINS_CALL(COMPILE_PATTERN_MATCH_CLAUSE_PLUG, VH, ap, cpmc);
|
||||
}
|
||||
|
||||
@h Influencing index.
|
||||
Called from //index: Index Physical World// to add something (if it wishes)
|
||||
to the index description of an instance in the spatial model. For example,
|
||||
|
|
|
@ -100,7 +100,7 @@ void IFModule::create_plugins(void) {
|
|||
times_plugin = PluginManager::new(TimesOfDay::start, I"times of day", ifp);
|
||||
|
||||
actions_plugin = PluginManager::new(&ActionsPlugin::start, I"actions", ifp);
|
||||
going_plugin = PluginManager::new(&Going::start, I"going", actions_plugin);
|
||||
going_plugin = PluginManager::new(&GoingPlugin::start, I"going", actions_plugin);
|
||||
|
||||
parsing_plugin = PluginManager::new(&ParsingPlugin::start, I"command", ifp);
|
||||
showme_plugin = PluginManager::new(&RTShowmeCommand::start, I"showme", parsing_plugin);
|
||||
|
|
|
@ -7,10 +7,10 @@ write "if taking or dropping something", for example, and this is implicitly
|
|||
a test of what the current action is.
|
||||
|
||||
This is represented in the parse tree as the twig:
|
||||
|
||||
= (text)
|
||||
TEST_VALUE_NT
|
||||
CONSTANT_NT
|
||||
|
||||
=
|
||||
where the constant below is the action seen as a noun -- linguistically, a
|
||||
"gerund". It will always have the kind |K_stored_action| or |K_description_of_action|,
|
||||
depending on whether the test is against an explicit action or something vaguer.
|
||||
|
|
|
@ -13,7 +13,7 @@ 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;
|
||||
|
|
|
@ -578,12 +578,16 @@ void ActionNameLists::log_entry(anl_entry *entry) {
|
|||
ActionNameLists::log_entry_briefly(entry);
|
||||
LOOP_THROUGH_ANL_CLAUSES(c, entry)
|
||||
if (Wordings::nonempty(c->clause_text)) {
|
||||
LOG(" "); ActionNameLists::log_clause(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ActionNameLists::log_clause(anl_clause *c) {
|
||||
LOG("[");
|
||||
APClauses::write_clause_ID(DL, c->clause_ID, c->stv_to_match);
|
||||
LOG(": %W]", c->clause_text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ActionNameLists::log_briefly(action_name_list *list) {
|
||||
if (list == NULL) {
|
||||
|
@ -705,10 +709,10 @@ action_name_list *ActionNameLists::parse(wording W, int tense, int *sense) {
|
|||
=
|
||||
<anl-entry> ::=
|
||||
<named-action-pattern> | ==> { -, ActionNameLists::nap_entry(RP[1], W, EMPTY_WORDING) }
|
||||
<named-action-pattern-with-tail> | ==> { pass 1 }
|
||||
<named-action-pattern-tailed> | ==> { pass 1 }
|
||||
<anl-entry-with-action> ==> { pass 1 }
|
||||
|
||||
<named-action-pattern-with-tail> internal {
|
||||
<named-action-pattern-tailed> internal {
|
||||
for (int i=Wordings::first_wn(W); i<= Wordings::last_wn(W) - 1; i++) {
|
||||
if (<named-action-pattern>(Wordings::up_to(W, i))) {
|
||||
==> { -, ActionNameLists::nap_entry(<<rp>>, W, Wordings::from(W, i+1)) };
|
||||
|
@ -760,7 +764,6 @@ in the Laboratory", we get the following set of |results|:
|
|||
=
|
||||
|
||||
@<Parse the wording into a list of results@> =
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Parsing ANL from %W (tense %d)\n", W, anl_parsing_tense);
|
||||
anl_entry *trial_entry = ActionNameLists::new_entry_at(EMPTY_WORDING);
|
||||
action_name *an;
|
||||
LOOP_OVER(an, action_name) {
|
||||
|
@ -772,7 +775,6 @@ in the Laboratory", we get the following set of |results|:
|
|||
@<Include the trial entry@>;
|
||||
NoMatch: ;
|
||||
}
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Parsing ANL from %W resulted in:\n$8\n", W, results);
|
||||
|
||||
@<Ready the trial entry for another test@> =
|
||||
trial_entry->next_entry = NULL;
|
||||
|
@ -877,7 +879,7 @@ becomes the ramified set
|
|||
=
|
||||
Note that the |TAIL_AP_CLAUSE| clauses, which were just temporary holders
|
||||
for leftover text, have gone entirely. Had it been impossible to break them
|
||||
into legal subclauses, they would have caused the result to be struct out
|
||||
into legal subclauses, they would have caused the result to be struck out
|
||||
altogether. For example, this:
|
||||
= (text)
|
||||
(1). +0 taking inventory [tail: book]
|
||||
|
@ -1032,8 +1034,9 @@ clause twice, and also means that pathological text like "in in in in in
|
|||
in in in in in in in in in in in in in in in in in in in in in in in in in"
|
||||
cannot cause a combinatorial nightmare; because each clause appears at
|
||||
most once in any entry, the number of entries produced by ramification is
|
||||
capped at $2^n$, where $n$ is the number of clauses whose matching words
|
||||
appear somewhere in the text.
|
||||
capped at $2^n$, where $n$ is the number of different clauses whose matching
|
||||
words appear somewhere in the text. As Inform ships with only seven different
|
||||
clauses anyway, this will never be too bad.
|
||||
|
||||
=
|
||||
void ActionNameLists::detonate(int potential_C, stacked_variable *stv, wording T, wording W) {
|
||||
|
|
|
@ -253,7 +253,7 @@ void APClauses::set_action_variable_spec(action_pattern *ap, stacked_variable *s
|
|||
ap_clause *apoc = APClauses::ensure_clause(ap, C);
|
||||
apoc->stv_to_match = stv;
|
||||
apoc->clause_spec = spec;
|
||||
PluginCalls::new_AP_clause(ap, apoc);
|
||||
PluginCalls::new_action_variable_clause(ap, apoc);
|
||||
}
|
||||
|
||||
ap_clause *APClauses::advance_to_next_av_clause(ap_clause *apoc) {
|
||||
|
|
|
@ -24,8 +24,8 @@ 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.
|
||||
description of an action which may have happened in the past: for example,
|
||||
"dropped the hat". These are just a special case of action patterns.
|
||||
|
||||
=
|
||||
void ActionsPlugin::start(void) {
|
||||
|
@ -69,7 +69,7 @@ The "waiting" action is sacred, because it is the default value for
|
|||
= (early code)
|
||||
action_name *waiting_action = NULL;
|
||||
|
||||
@ These are recognised by their English names when defined by the Standard Rules.
|
||||
@ This is recognised by its English name when defined by the Standard Rules.
|
||||
(So there is no need to translate this to other languages.)
|
||||
|
||||
=
|
||||
|
|
|
@ -1,22 +1,31 @@
|
|||
[Going::] Going.
|
||||
[GoingPlugin::] Going.
|
||||
|
||||
A plugin to provide a little extra support for the "going" action.
|
||||
|
||||
@ The "going" action, allowing actors to move from room to room in the spatial
|
||||
map of the world model, is by far the most intricately implemented. Reflecting
|
||||
that, we provide quite a lot of hard-wired compiler support for it, in the form
|
||||
of a plugin. If the actions plugin is not also active, none of the functions
|
||||
below will ever be called, whether or not going is active.
|
||||
of this plugin.
|
||||
|
||||
Note that if the actions plugin is not also active, none of the functions
|
||||
below will ever be called.
|
||||
|
||||
=
|
||||
void Going::start(void) {
|
||||
PluginManager::plug(NEW_ACTION_NOTIFY_PLUG, Going::new_action_notify);
|
||||
PluginManager::plug(WRITE_AP_CLAUSE_ID_PLUG, Going::write_clause_ID);
|
||||
PluginManager::plug(ASPECT_OF_AP_CLAUSE_ID_PLUG, Going::aspect);
|
||||
PluginManager::plug(DIVERT_AP_CLAUSE_PLUG, Going::divert_clause_ID);
|
||||
PluginManager::plug(NEW_AP_CLAUSE_PLUG, Going::new_clause);
|
||||
PluginManager::plug(ACT_ON_ANL_ENTRY_OPTIONS_PLUG, Going::act_on_options);
|
||||
PluginManager::plug(COMPARE_AP_SPECIFICITY_PLUG, Going::compare_specificity);
|
||||
void GoingPlugin::start(void) {
|
||||
PluginManager::plug(NEW_ACTION_NOTIFY_PLUG, GoingPlugin::new_action_notify);
|
||||
PluginManager::plug(WRITE_AP_CLAUSE_ID_PLUG, GoingPlugin::write_clause_ID);
|
||||
PluginManager::plug(ASPECT_OF_AP_CLAUSE_ID_PLUG, GoingPlugin::aspect);
|
||||
PluginManager::plug(DIVERT_AP_CLAUSE_PLUG, GoingPlugin::divert_clause_ID);
|
||||
PluginManager::plug(PARSE_AP_CLAUSE_PLUG, GoingPlugin::parse_clause);
|
||||
PluginManager::plug(VALIDATE_AP_CLAUSE_PLUG, GoingPlugin::validate);
|
||||
PluginManager::plug(NEW_AP_CLAUSE_PLUG, GoingPlugin::new_clause);
|
||||
PluginManager::plug(ACT_ON_ANL_ENTRY_OPTIONS_PLUG, GoingPlugin::act_on_options);
|
||||
PluginManager::plug(COMPARE_AP_SPECIFICITY_PLUG, GoingPlugin::compare_specificity);
|
||||
|
||||
PluginManager::plug(SET_PATTERN_MATCH_REQUIREMENTS_PLUG,
|
||||
RTGoing::set_pattern_match_requirements);
|
||||
PluginManager::plug(COMPILE_PATTERN_MATCH_CLAUSE_PLUG,
|
||||
RTGoing::compile_pattern_match_clause);
|
||||
}
|
||||
|
||||
@ Firstly, we have to recognise the action we will treat differently, which
|
||||
|
@ -28,7 +37,7 @@ we do by its (English) name in the Standard Rules:
|
|||
|
||||
@ =
|
||||
action_name *going_action = NULL;
|
||||
int Going::new_action_notify(action_name *an) {
|
||||
int GoingPlugin::new_action_notify(action_name *an) {
|
||||
if (<going-action>(ActionNameNames::tensed(an, IS_TENSE))) going_action = an;
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -36,7 +45,7 @@ int Going::new_action_notify(action_name *an) {
|
|||
@ The going action variables are identified at runtime by this ID number:
|
||||
|
||||
=
|
||||
int Going::id(void) {
|
||||
int GoingPlugin::id(void) {
|
||||
if (going_action == NULL) return 0;
|
||||
return RTActions::action_variable_set_ID(going_action);
|
||||
}
|
||||
|
@ -53,7 +62,7 @@ aspect, and the other three share a new one.
|
|||
@e GOING_APCA
|
||||
|
||||
=
|
||||
int Going::write_clause_ID(OUTPUT_STREAM, int C) {
|
||||
int GoingPlugin::write_clause_ID(OUTPUT_STREAM, int C) {
|
||||
switch (C) {
|
||||
case GOING_FROM_AP_CLAUSE: WRITE("going-from"); return TRUE;
|
||||
case GOING_TO_AP_CLAUSE: WRITE("going-to"); return TRUE;
|
||||
|
@ -64,7 +73,7 @@ int Going::write_clause_ID(OUTPUT_STREAM, int C) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
int Going::aspect(int C, int *A) {
|
||||
int GoingPlugin::aspect(int C, int *A) {
|
||||
switch (C) {
|
||||
case GOING_FROM_AP_CLAUSE: *A = IN_APCA; return TRUE;
|
||||
case GOING_TO_AP_CLAUSE: *A = IN_APCA; return TRUE;
|
||||
|
@ -84,10 +93,10 @@ If we do spot one of these five magic variables, we tie it to a clause with
|
|||
a special ID number of our choice.
|
||||
|
||||
=
|
||||
int Going::divert_clause_ID(stacked_variable *stv, int *id) {
|
||||
int GoingPlugin::divert_clause_ID(stacked_variable *stv, int *id) {
|
||||
int oid = StackedVariables::get_owner_id(stv);
|
||||
int off = StackedVariables::get_offset(stv);
|
||||
if ((going_action) && (oid == Going::id())) {
|
||||
if ((going_action) && (oid == GoingPlugin::id())) {
|
||||
switch (off) {
|
||||
case 0: *id = GOING_FROM_AP_CLAUSE; return TRUE;
|
||||
case 1: *id = GOING_TO_AP_CLAUSE; return TRUE;
|
||||
|
@ -105,7 +114,7 @@ protocol for this; it could have, but we don't need this to be visible to author
|
|||
writing source text.)
|
||||
|
||||
=
|
||||
int Going::new_clause(action_pattern *ap, ap_clause *apoc) {
|
||||
int GoingPlugin::new_clause(action_pattern *ap, ap_clause *apoc) {
|
||||
if ((apoc->clause_ID == GOING_FROM_AP_CLAUSE) ||
|
||||
(apoc->clause_ID == GOING_TO_AP_CLAUSE))
|
||||
APClauses::set_opt(apoc, ALLOW_REGION_AS_ROOM_APCOPT);
|
||||
|
@ -115,11 +124,11 @@ int Going::new_clause(action_pattern *ap, ap_clause *apoc) {
|
|||
@ Going nowhere is a special syntax:
|
||||
|
||||
=
|
||||
void Going::go_nowhere(action_pattern *ap) {
|
||||
void GoingPlugin::go_nowhere(action_pattern *ap) {
|
||||
APClauses::set_spec(ap, GOING_TO_AP_CLAUSE, Rvalues::new_nothing_object_constant());
|
||||
}
|
||||
|
||||
int Going::going_nowhere(action_pattern *ap) {
|
||||
int GoingPlugin::going_nowhere(action_pattern *ap) {
|
||||
if (Rvalues::is_nothing_object_constant(APClauses::spec(ap, GOING_TO_AP_CLAUSE)))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
|
@ -128,11 +137,11 @@ int Going::going_nowhere(action_pattern *ap) {
|
|||
@ And similarly going somewhere:
|
||||
|
||||
=
|
||||
void Going::go_somewhere(action_pattern *ap) {
|
||||
void GoingPlugin::go_somewhere(action_pattern *ap) {
|
||||
APClauses::set_spec(ap, GOING_TO_AP_CLAUSE, Descriptions::from_kind(K_room, FALSE));
|
||||
}
|
||||
|
||||
int Going::going_somewhere(action_pattern *ap) {
|
||||
int GoingPlugin::going_somewhere(action_pattern *ap) {
|
||||
parse_node *val = APClauses::spec(ap, GOING_TO_AP_CLAUSE);
|
||||
if ((Descriptions::is_kind_like(val)) && (Kinds::eq(Descriptions::explicit_kind(val), K_room)))
|
||||
return TRUE;
|
||||
|
@ -153,17 +162,17 @@ int Going::going_somewhere(action_pattern *ap) {
|
|||
instead setting the appropriate entry options bit:
|
||||
|
||||
=
|
||||
int Going::divert_clause_parsing(action_name *an, anl_clause *c) {
|
||||
int GoingPlugin::parse_clause(action_name *an, anl_clause *c, int *bits) {
|
||||
if ((c->clause_ID == NOUN_AP_CLAUSE) && (an) && (an == going_action) &&
|
||||
(<going-action-irregular-operand>(c->clause_text))) return <<r>>;
|
||||
return -1;
|
||||
(<going-action-irregular-operand>(c->clause_text))) { *bits |= <<r>>; }
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ Options bits which we later pick up here, moving the irregular noun phrase
|
||||
into the |GOING_TO_AP_CLAUSE| instead, where we supply our own evaluation:
|
||||
|
||||
=
|
||||
int Going::act_on_options(anl_entry *entry, int entry_options, int *fail) {
|
||||
int GoingPlugin::act_on_options(anl_entry *entry, int entry_options, int *fail) {
|
||||
if (entry_options & NOWHERE_AP_CLAUSE_OPTION) {
|
||||
wording W = ActionNameLists::get_clause_wording(entry, NOUN_AP_CLAUSE);
|
||||
ActionNameLists::truncate_clause(entry, NOUN_AP_CLAUSE, 0);
|
||||
|
@ -190,18 +199,18 @@ int Going::act_on_options(anl_entry *entry, int entry_options, int *fail) {
|
|||
@ Here we perform sanity checks on the clauses.
|
||||
|
||||
=
|
||||
int Going::validate(stacked_variable *stv, parse_node *spec) {
|
||||
int C = -1; Going::divert_clause_ID(stv, &C);
|
||||
int GoingPlugin::validate(action_name *an, anl_clause *c, int *outcome) {
|
||||
char *keyword = NULL; kind *ka = NULL, *kb = NULL;
|
||||
switch (C) {
|
||||
switch (c->clause_ID) {
|
||||
case GOING_FROM_AP_CLAUSE: keyword = "from"; ka = K_room; kb = K_region; break;
|
||||
case GOING_TO_AP_CLAUSE: keyword = "to"; ka = K_room; kb = K_region; break;
|
||||
case GOING_BY_AP_CLAUSE: keyword = "by"; ka = K_thing; kb = NULL; break;
|
||||
case GOING_THROUGH_AP_CLAUSE: keyword = "through"; ka = K_door; kb = NULL; break;
|
||||
case PUSHING_AP_CLAUSE: keyword = "with"; ka = K_thing; kb = NULL; break;
|
||||
}
|
||||
if (keyword == NULL) return NOT_APPLICABLE;
|
||||
return Going::check_clause(spec, keyword, ka, kb);
|
||||
if (keyword == NULL) return FALSE;
|
||||
*outcome = GoingPlugin::check_clause(c->evaluation, keyword, ka, kb);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ Each clause can be within one of up to two kinds, or else can be "nothing"
|
||||
|
@ -210,7 +219,7 @@ or unspecified:
|
|||
=
|
||||
parse_node *PM_GoingWrongKind_issued_at = NULL;
|
||||
parse_node *PM_GoingWithoutObject_issued_at = NULL;
|
||||
int Going::check_clause(parse_node *spec, char *keyword, kind *ka, kind *kb) {
|
||||
int GoingPlugin::check_clause(parse_node *spec, char *keyword, kind *ka, kind *kb) {
|
||||
if (spec == NULL) return TRUE;
|
||||
if (Rvalues::is_nothing_object_constant(spec)) return TRUE;
|
||||
if (Specifications::is_description_like(spec)) {
|
||||
|
@ -256,7 +265,7 @@ if no "going to" destination is specified, we had better check the destination
|
|||
to make sure it actually exists. So this can be used to see if the need arises:
|
||||
|
||||
=
|
||||
int Going::need_to_check_destination_exists(action_pattern *ap) {
|
||||
int GoingPlugin::need_to_check_destination_exists(action_pattern *ap) {
|
||||
if ((APClauses::spec(ap, GOING_TO_AP_CLAUSE) == NULL) &&
|
||||
((APClauses::spec(ap, GOING_FROM_AP_CLAUSE) != NULL) ||
|
||||
(APClauses::spec(ap, GOING_BY_AP_CLAUSE) != NULL) ||
|
||||
|
@ -272,10 +281,9 @@ giving neither clause priority over the other, which means some fiddly crossover
|
|||
code if |ap1| has one and |ap2| the other.
|
||||
|
||||
=
|
||||
int Going::compare_specificity(action_pattern *ap1, action_pattern *ap2, int *rv, int *ignore_in) {
|
||||
*ignore_in = TRUE; *rv = 0;
|
||||
|
||||
int suspend_usual_from_and_room = FALSE;
|
||||
int GoingPlugin::compare_specificity(action_pattern *ap1, action_pattern *ap2, int *rv,
|
||||
int *ignore_in) {
|
||||
*rv = 0;
|
||||
|
||||
c_s_stage_law = I"III.2.4 - Action/Where/Other Optional Clauses";
|
||||
|
||||
|
@ -284,8 +292,9 @@ int Going::compare_specificity(action_pattern *ap1, action_pattern *ap2, int *rv
|
|||
if (rct1 > rct2) { *rv = 1; return TRUE; }
|
||||
if (rct1 < rct2) { *rv = -1; return TRUE; }
|
||||
|
||||
*rv = APClauses::cmp_clause(PUSHING_AP_CLAUSE, ap1, ap2); if (*rv) return TRUE;
|
||||
*ignore_in = TRUE;
|
||||
|
||||
*rv = APClauses::cmp_clause(PUSHING_AP_CLAUSE, ap1, ap2); if (*rv) return TRUE;
|
||||
*rv = APClauses::cmp_clause(GOING_BY_AP_CLAUSE, ap1, ap2); if (*rv) return TRUE;
|
||||
*rv = APClauses::cmp_clause(GOING_THROUGH_AP_CLAUSE, ap1, ap2); if (*rv) return TRUE;
|
||||
|
||||
|
@ -296,15 +305,23 @@ int Going::compare_specificity(action_pattern *ap1, action_pattern *ap2, int *rv
|
|||
if (rct1 > rct2) { *rv = 1; return TRUE; }
|
||||
if (rct1 < rct2) { *rv = -1; return TRUE; }
|
||||
|
||||
if ((APClauses::spec(ap1, GOING_FROM_AP_CLAUSE)) && (APClauses::spec(ap1, IN_AP_CLAUSE) == NULL)
|
||||
&& (APClauses::spec(ap2, IN_AP_CLAUSE)) && (APClauses::spec(ap2, GOING_FROM_AP_CLAUSE) == NULL)) {
|
||||
*rv = APClauses::cmp_clauses(GOING_FROM_AP_CLAUSE, ap1, IN_AP_CLAUSE, ap2); if (*rv) return TRUE;
|
||||
int suspend_usual_from_and_room = FALSE;
|
||||
|
||||
if ((APClauses::spec(ap1, GOING_FROM_AP_CLAUSE)) &&
|
||||
(APClauses::spec(ap1, IN_AP_CLAUSE) == NULL) &&
|
||||
(APClauses::spec(ap2, IN_AP_CLAUSE)) &&
|
||||
(APClauses::spec(ap2, GOING_FROM_AP_CLAUSE) == NULL)) {
|
||||
*rv = APClauses::cmp_clauses(GOING_FROM_AP_CLAUSE, ap1, IN_AP_CLAUSE, ap2);
|
||||
if (*rv) return TRUE;
|
||||
suspend_usual_from_and_room = TRUE;
|
||||
}
|
||||
|
||||
if ((APClauses::spec(ap2, GOING_FROM_AP_CLAUSE)) && (APClauses::spec(ap2, IN_AP_CLAUSE) == NULL)
|
||||
&& (APClauses::spec(ap1, IN_AP_CLAUSE)) && (APClauses::spec(ap1, GOING_FROM_AP_CLAUSE) == NULL)) {
|
||||
*rv = APClauses::cmp_clauses(IN_AP_CLAUSE, ap1, GOING_FROM_AP_CLAUSE, ap2); if (*rv) return TRUE;
|
||||
if ((APClauses::spec(ap2, GOING_FROM_AP_CLAUSE)) &&
|
||||
(APClauses::spec(ap2, IN_AP_CLAUSE) == NULL) &&
|
||||
(APClauses::spec(ap1, IN_AP_CLAUSE)) &&
|
||||
(APClauses::spec(ap1, GOING_FROM_AP_CLAUSE) == NULL)) {
|
||||
*rv = APClauses::cmp_clauses(IN_AP_CLAUSE, ap1, GOING_FROM_AP_CLAUSE, ap2);
|
||||
if (*rv) return TRUE;
|
||||
suspend_usual_from_and_room = TRUE;
|
||||
}
|
||||
|
||||
|
@ -315,5 +332,5 @@ int Going::compare_specificity(action_pattern *ap1, action_pattern *ap2, int *rv
|
|||
|
||||
*rv = APClauses::cmp_clause(GOING_TO_AP_CLAUSE, ap1, ap2); if (*rv) return TRUE;
|
||||
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -10,12 +10,12 @@ occur, because text is often parsed in several contexts at once, so just
|
|||
because it fails this one does not mean it is wrong.) To improve our chances,
|
||||
the code below sets the following global variable on each failure.
|
||||
|
||||
@d MISC_PAPF 1
|
||||
@d NOPARTICIPLE_PAPF 2
|
||||
@d MIXEDNOUNS_PAPF 3
|
||||
@d WHEN_PAPF 4
|
||||
@d WHENOKAY_PAPF 5
|
||||
@d IMMISCIBLE_PAPF 6
|
||||
@e MISC_PAPF from 1
|
||||
@e NOPARTICIPLE_PAPF
|
||||
@e MIXEDNOUNS_PAPF
|
||||
@e WHEN_PAPF
|
||||
@e WHENOKAY_PAPF
|
||||
@e IMMISCIBLE_PAPF
|
||||
|
||||
= (early code)
|
||||
int pap_failure_reason; /* one of the above */
|
||||
|
@ -107,7 +107,7 @@ action_name_list *ParseActionPatterns::list_of_actions_only(wording W, int *anyo
|
|||
if (<action-pattern>(W)) {
|
||||
action_pattern *ap = (action_pattern *) <<rp>>;
|
||||
anl = ap->action_list;
|
||||
if ((ActionNameLists::nonempty(anl)) && (<<r>> == ACTOR_EXPLICITLY_UNIVERSAL))
|
||||
if ((ActionNameLists::nonempty(anl)) && (<<r>> == ACTOR_EXP_UNIVERSAL))
|
||||
*anyone = TRUE;
|
||||
}
|
||||
ParseActionPatterns::restore_mode(saved);
|
||||
|
@ -189,9 +189,9 @@ Our aim here is to determine who will perform the action.
|
|||
|
||||
@d ACTOR_REQUESTED 0
|
||||
@d ACTOR_NAMED 1
|
||||
@d ACTOR_EXPLICITLY_UNIVERSAL 2
|
||||
@d ACTOR_EXPLICITLY_PLAYER 3
|
||||
@d ACTOR_IMPLICITLY_PLAYER 4
|
||||
@d ACTOR_EXP_UNIVERSAL 2
|
||||
@d ACTOR_EXP_PLAYER 3
|
||||
@d ACTOR_IMP_PLAYER 4
|
||||
|
||||
=
|
||||
<action-pattern> ::=
|
||||
|
@ -199,8 +199,8 @@ Our aim here is to determine who will perform the action.
|
|||
<s-ap-parameter> trying <ap-three-present> | ==> @<Someone specific@>
|
||||
an actor trying <ap-three-present> | ==> @<Anyone except the player@>
|
||||
an actor <ap-three-present> | ==> @<Anyone except the player@>
|
||||
trying <ap-three-present> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
<ap-three-present> | ==> { ACTOR_IMPLICITLY_PLAYER, RP[1] };
|
||||
trying <ap-three-present> | ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
<ap-three-present> | ==> { ACTOR_IMP_PLAYER, RP[1] };
|
||||
<actor-description> <ap-three-present> ==> @<Someone specific@>
|
||||
|
||||
<we-are-action-pattern> ::=
|
||||
|
@ -209,10 +209,10 @@ Our aim here is to determine who will perform the action.
|
|||
<s-ap-parameter> trying <ap-three-present> | ==> @<Someone specific@>
|
||||
an actor trying <ap-three-present> | ==> @<Anyone except the player@>
|
||||
an actor <ap-three-present> | ==> @<Anyone except the player@>
|
||||
we are trying <ap-three-present> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
trying <ap-three-present> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
we are <ap-three-present> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
<ap-three-present> | ==> { ACTOR_IMPLICITLY_PLAYER, RP[1] };
|
||||
we are trying <ap-three-present> | ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
trying <ap-three-present> | ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
we are <ap-three-present> | ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
<ap-three-present> | ==> { ACTOR_IMP_PLAYER, RP[1] };
|
||||
<actor-description> <ap-three-present> ==> @<Someone specific@>
|
||||
|
||||
<action-pattern-negated> ::=
|
||||
|
@ -221,10 +221,10 @@ Our aim here is to determine who will perform the action.
|
|||
<s-ap-parameter> not trying <ap-three-present> | ==> @<Someone specific@>
|
||||
an actor not trying <ap-three-present> | ==> @<Anyone except the player@>
|
||||
an actor not <ap-three-present> | ==> @<Anyone except the player@>
|
||||
we are not trying <ap-three-present> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
not trying <ap-three-present> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
we are not <ap-three-present> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
not <ap-three-present> | ==> { ACTOR_IMPLICITLY_PLAYER, RP[1] };
|
||||
we are not trying <ap-three-present> | ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
not trying <ap-three-present> | ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
we are not <ap-three-present> | ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
not <ap-three-present> | ==> { ACTOR_IMP_PLAYER, RP[1] };
|
||||
not <actor-description> <ap-three-present> ==> @<Someone specific@>
|
||||
|
||||
<action-pattern-past> ::=
|
||||
|
@ -232,16 +232,16 @@ Our aim here is to determine who will perform the action.
|
|||
<s-ap-parameter> has tried <ap-three-present> | ==> @<Someone specific@>
|
||||
an actor has tried <ap-three-present> | ==> @<Anyone except the player@>
|
||||
an actor has <ap-three-past> | ==> @<Anyone except the player@>
|
||||
we have tried <ap-three-present> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
we have <ap-three-past> ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
we have tried <ap-three-present> | ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
we have <ap-three-past> ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
|
||||
<action-pattern-past-negated> ::=
|
||||
we have not asked <s-ap-parameter> to try <ap-three-present> | ==> @<Someone requested@>
|
||||
<s-ap-parameter> has not tried <ap-three-present> | ==> @<Someone specific@>
|
||||
an actor has not tried <ap-three-present> | ==> @<Anyone except the player@>
|
||||
an actor has not <ap-three-past> | ==> @<Anyone except the player@>
|
||||
we have not tried <ap-three-present> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
we have not <ap-three-past> ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
we have not tried <ap-three-present> | ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
we have not <ap-three-past> ==> { ACTOR_EXP_PLAYER, RP[1] };
|
||||
|
||||
@<Someone requested@> =
|
||||
action_pattern *ap = RP[2];
|
||||
|
@ -255,7 +255,7 @@ Our aim here is to determine who will perform the action.
|
|||
|
||||
@<Anyone except the player@> =
|
||||
action_pattern *ap = RP[1]; APClauses::make_actor_anyone_except_player(ap);
|
||||
==> { ACTOR_EXPLICITLY_UNIVERSAL, ap };
|
||||
==> { ACTOR_EXP_UNIVERSAL, ap };
|
||||
|
||||
@ Note that the three present-tense cases all allow the abbreviated form
|
||||
"Raffles taking a jewel" rather than the less likely to be ambiguous "Raffles
|
||||
|
@ -363,8 +363,8 @@ name; so we needn't spend any further time.
|
|||
if (Wordings::empty(W)) internal_error("PAP on illegal word range");
|
||||
if (Lexer::word(Wordings::first_wn(W)) == OPENBRACE_V) return NULL;
|
||||
unsigned int d = Vocabulary::disjunction_of_flags(W);
|
||||
if (((ParseActionPatterns::current_tense() == IS_TENSE) && ((d & (ACTION_PARTICIPLE_MC+NAMED_AP_MC)) == 0))) {
|
||||
LOGIF(ACTION_PATTERN_PARSING, "No participle found in: %W\n", W);
|
||||
if (((ParseActionPatterns::current_tense() == IS_TENSE) &&
|
||||
((d & (ACTION_PARTICIPLE_MC+NAMED_AP_MC)) == 0))) {
|
||||
pap_failure_reason = NOPARTICIPLE_PAPF;
|
||||
return NULL;
|
||||
}
|
||||
|
@ -408,10 +408,23 @@ special clause of its own.
|
|||
|
||||
=
|
||||
<ap-five> ::=
|
||||
<ap-six> when/while <ap-five-condition> | ==> { 0, RP[1] }; action_pattern *ap = *XP; APClauses::set_spec(ap, WHEN_AP_CLAUSE, RP[2]); if (pap_failure_reason == MISC_PAPF) pap_failure_reason = WHENOKAY_PAPF;
|
||||
<ap-six> | ==> { 0, RP[1] };
|
||||
... when/while <ap-five-condition> | ==> { 0, NULL }; pap_failure_reason = WHENOKAY_PAPF; return FALSE; /* used only to diagnose problems */
|
||||
... when/while ... ==> { 0, NULL }; if (pap_failure_reason != WHENOKAY_PAPF) pap_failure_reason = WHEN_PAPF; return FALSE; /* used only to diagnose problems */
|
||||
<ap-six> when/while <ap-five-condition> | ==> @<Succeed with when okay@>;
|
||||
<ap-six> | ==> { pass 1 };
|
||||
... when/while <ap-five-condition> | ==> @<Fail with when okay@>;
|
||||
... when/while ... ==> @<Fail with when not okay@>;
|
||||
|
||||
@<Succeed with when okay@> =
|
||||
action_pattern *ap = RP[1]; APClauses::set_spec(ap, WHEN_AP_CLAUSE, RP[2]);
|
||||
if (pap_failure_reason == MISC_PAPF) pap_failure_reason = WHENOKAY_PAPF;
|
||||
==> { -, ap };
|
||||
|
||||
@<Fail with when okay@> =
|
||||
pap_failure_reason = WHENOKAY_PAPF;
|
||||
return FALSE;
|
||||
|
||||
@<Fail with when not okay@> =
|
||||
if (pap_failure_reason != WHENOKAY_PAPF) pap_failure_reason = WHEN_PAPF;
|
||||
return FALSE;
|
||||
|
||||
@ <ap-five-condition> is really just <s-condition> in disguise -- i.e.,
|
||||
it matches a standard Inform condition -- but it's implemented as an internal
|
||||
|
@ -425,16 +438,16 @@ to enable Inform to set up a stack frame if there isn't one already, and so on.
|
|||
Frames::get_stvol(),
|
||||
all_nonempty_stacked_action_vars);
|
||||
LOGIF(ACTION_PATTERN_PARSING, "A when clause <%W> is suspected.\n", W);
|
||||
parse_node *wts = NULL;
|
||||
parse_node *when_cond = NULL;
|
||||
int s = pap_failure_reason;
|
||||
int saved = ParseActionPatterns::exit_mode(PERMIT_TRYING_OMISSION);
|
||||
if (<s-condition>(W)) wts = <<rp>>;
|
||||
if (<s-condition>(W)) when_cond = <<rp>>;
|
||||
pap_failure_reason = s;
|
||||
ParseActionPatterns::restore_mode(saved);
|
||||
if (phsf) Frames::remove_nonphrase_stack_frame();
|
||||
if ((wts) && (Dash::validate_conditional_clause(wts))) {
|
||||
LOGIF(ACTION_PATTERN_PARSING, "When clause validated: $P.\n", wts);
|
||||
==> { -, wts };
|
||||
if ((when_cond) && (Dash::validate_conditional_clause(when_cond))) {
|
||||
LOGIF(ACTION_PATTERN_PARSING, "When clause validated: $P.\n", when_cond);
|
||||
==> { -, when_cond };
|
||||
return TRUE;
|
||||
}
|
||||
==> { fail nonterminal };
|
||||
|
|
|
@ -22,11 +22,11 @@ action_pattern *ParseClauses::ap_seven(wording W) {
|
|||
LOGIF(ACTION_PATTERN_PARSING, "Level Seven on: %W\n", W);
|
||||
action_name_list *list =
|
||||
ActionNameLists::parse(W, ParseActionPatterns::current_tense(), NULL);
|
||||
LOGIF(ACTION_PATTERN_PARSING, "List for %W is:\n$L\n", W, list);
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Action name list for %W is:\n$L", W, list);
|
||||
if (ActionNameLists::length(list) == 0) return NULL;
|
||||
|
||||
@<Reduce the list to the first viable entry at each word position@>;
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Reduced to viability:\n$L\n", list);
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Reduced to viability:\n$L", list);
|
||||
|
||||
@<Reject the resulting list if two or more entries contain clauses@>;
|
||||
@<Reject the resulting list if, given the clauses, two actions are immiscible@>;
|
||||
|
@ -89,12 +89,25 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
if (viable == NULL) return NULL;
|
||||
ActionNameLists::remove_entries_marked_for_deletion(list);
|
||||
|
||||
@ Now each clause's text must be evaluated: for example, on the clause
|
||||
|[in-presence: hans]| we will have to evaluate "Hans".
|
||||
|
||||
Note the special case for actions whose second noun has the kind |K_understanding|,
|
||||
meaning that they hold topics of conversation ("ask Hans about cosmic rays").
|
||||
There is ordinarily no way in Inform to write a literal of this kind, but here
|
||||
we are allowed to write a text literal instead, and it is automatically converted.
|
||||
|
||||
@<Parse the clauses@> =
|
||||
int saved_pap = pap_failure_reason;
|
||||
LOOP_THROUGH_ANL_CLAUSES(c, entry) {
|
||||
if (fail) break;
|
||||
LOG_INDENT;
|
||||
if (Log::aspect_switched_on(ACTION_PATTERN_PARSING_DA)) {
|
||||
LOG("parsing "); ActionNameLists::log_clause(c); LOG(" - ");
|
||||
}
|
||||
if (Wordings::nonempty(c->clause_text)) {
|
||||
int opts = Going::divert_clause_parsing(an, c);
|
||||
if (opts >= 0) {
|
||||
int opts = 0; PluginCalls::parse_AP_clause(an, c, &opts);
|
||||
if (opts != 0) {
|
||||
entry_options |= opts;
|
||||
} else if ((c->clause_ID == SECOND_AP_CLAUSE) && (an) && (K_understanding) &&
|
||||
(Kinds::eq(ActionSemantics::kind_of_second(an), K_understanding)) &&
|
||||
|
@ -111,11 +124,41 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
if ((K_understanding) && (Rvalues::is_CONSTANT_of_kind(c->evaluation, K_text)))
|
||||
Node::set_kind_of_value(c->evaluation, K_understanding);
|
||||
}
|
||||
if (Log::aspect_switched_on(ACTION_PATTERN_PARSING_DA)) {
|
||||
if (fail) LOG("fail\n");
|
||||
else LOG("$P\n", c->evaluation);
|
||||
}
|
||||
LOG_OUTDENT;
|
||||
}
|
||||
pap_failure_reason = saved_pap;
|
||||
|
||||
@ 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".
|
||||
|
||||
=
|
||||
<action-operand> ::=
|
||||
something/anything | ==> { FALSE, - }
|
||||
something/anything else | ==> { FALSE, - }
|
||||
<s-ap-parameter> ==> { TRUE, RP[1] }
|
||||
|
||||
<understanding-action-irregular-operand> ::=
|
||||
something/anything | ==> { TRUE, - }
|
||||
it ==> { FALSE, - }
|
||||
|
||||
@ Supposing that we managed to find values for each clause, we might still
|
||||
have impossible ones: "putting 101 on false", say, where the noun seems to
|
||||
be the number 101 and the second noun the truth state "false". So we need
|
||||
to typecheck each clause.
|
||||
|
||||
@<Typecheck or otherwise validate the clauses@> =
|
||||
LOOP_THROUGH_ANL_CLAUSES(c, entry) {
|
||||
if (fail) break;
|
||||
LOG_INDENT;
|
||||
if (Log::aspect_switched_on(ACTION_PATTERN_PARSING_DA)) {
|
||||
LOG("validating "); ActionNameLists::log_clause(c); LOG(" - ");
|
||||
}
|
||||
kind *check = NULL;
|
||||
switch (c->clause_ID) {
|
||||
case NOUN_AP_CLAUSE:
|
||||
|
@ -134,14 +177,37 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
break;
|
||||
}
|
||||
if (c->stv_to_match) {
|
||||
int rv = Going::validate(c->stv_to_match, c->evaluation);
|
||||
if (rv == FALSE) return NULL;
|
||||
if (rv == NOT_APPLICABLE) check = StackedVariables::get_kind(c->stv_to_match);
|
||||
int rv = FALSE;
|
||||
if (PluginCalls::validate_AP_clause(an, c, &rv)) {
|
||||
if (Log::aspect_switched_on(ACTION_PATTERN_PARSING_DA))
|
||||
LOG("referred to plugin - ");
|
||||
if (rv == FALSE) {
|
||||
if (Log::aspect_switched_on(ACTION_PATTERN_PARSING_DA)) {
|
||||
LOG("failed badly with problem\n");
|
||||
}
|
||||
LOG_OUTDENT;
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
check = StackedVariables::get_kind(c->stv_to_match);
|
||||
}
|
||||
}
|
||||
if (Node::is(c->evaluation, UNKNOWN_NT)) fail = TRUE;
|
||||
else if ((check) && (Dash::validate_parameter(c->evaluation, check) == FALSE))
|
||||
else {
|
||||
if (Log::aspect_switched_on(ACTION_PATTERN_PARSING_DA))
|
||||
LOG("using Dash with kind %u - ", check);
|
||||
if ((check) && (Dash::validate_parameter(c->evaluation, check) == FALSE))
|
||||
fail = TRUE;
|
||||
}
|
||||
if (Log::aspect_switched_on(ACTION_PATTERN_PARSING_DA)) {
|
||||
if (fail) LOG("fail\n"); else LOG("pass\n");
|
||||
}
|
||||
LOG_OUTDENT;
|
||||
}
|
||||
|
||||
@ This is where heterogenous patterns like "dropping a thing or taking a
|
||||
container" are thrown out: only the last-placed action is allowed to have
|
||||
clauses.
|
||||
|
||||
@<Reject the resulting list if two or more entries contain clauses@> =
|
||||
int N = 0;
|
||||
|
@ -150,9 +216,22 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
N++;
|
||||
if (N > 1) {
|
||||
pap_failure_reason = MIXEDNOUNS_PAPF;
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Rejecting with mixed nouns\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ And this is where impossible mixtures of actions are thrown out: for
|
||||
example, if there is an action "setting" whose noun is a number, then
|
||||
"taking or setting 50" will be thrown out because the two actions here
|
||||
disagree about the meaning of the noun.
|
||||
|
||||
Similarly, "looking or taking a vehicle" is thrown out because looking has
|
||||
no noun.
|
||||
|
||||
This is done in the interests of having a type-safe way to compile the
|
||||
pattern check, but really it also avoids allowing action patterns which
|
||||
look like syllepses.
|
||||
|
||||
@<Reject the resulting list if, given the clauses, two actions are immiscible@> =
|
||||
int immiscible = FALSE, no_oow = 0, no_iw = 0, no_of_pars = 0;
|
||||
|
||||
|
@ -200,34 +279,23 @@ crucial: options near the top of the list are preferred to those lower down.
|
|||
|
||||
if (immiscible) {
|
||||
pap_failure_reason = IMMISCIBLE_PAPF;
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Rejecting with immiscible actions\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ Fanfares and trumpets voluntary:
|
||||
|
||||
@<Produce and return an action pattern from what survives of the list@> =
|
||||
action_pattern *ap = ActionPatterns::new(W);
|
||||
anl_item *first = ActionNameLists::first_item(list);
|
||||
if ((first) && ((first->action_listed) || (first->nap_listed))) ap->action_list = list;
|
||||
LOOP_THROUGH_ANL(entry, list)
|
||||
LOOP_THROUGH_ANL_CLAUSES(c, entry) {
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Writing %d '%W'\n", c->clause_ID, c->clause_text);
|
||||
LOGIF(ACTION_PATTERN_PARSING,
|
||||
"Succeeds with clause %d = '%W'\n", c->clause_ID, c->clause_text);
|
||||
if (c->stv_to_match)
|
||||
APClauses::set_action_variable_spec(ap, c->stv_to_match, c->evaluation);
|
||||
else
|
||||
APClauses::set_spec(ap, c->clause_ID, c->evaluation);
|
||||
}
|
||||
return ap;
|
||||
|
||||
@ 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".
|
||||
|
||||
=
|
||||
<action-operand> ::=
|
||||
something/anything | ==> { FALSE, - }
|
||||
something/anything else | ==> { FALSE, - }
|
||||
<s-ap-parameter> ==> { TRUE, RP[1] }
|
||||
|
||||
<understanding-action-irregular-operand> ::=
|
||||
something/anything | ==> { TRUE, - }
|
||||
it ==> { FALSE, - }
|
||||
|
|
|
@ -48,11 +48,11 @@ Chapter 4: Actions
|
|||
Action Patterns
|
||||
Action Name Lists
|
||||
Action Pattern Clauses
|
||||
Going
|
||||
Parse Action Patterns
|
||||
Parse Clauses
|
||||
Explicit Actions
|
||||
Named Action Patterns
|
||||
Going
|
||||
|
||||
Chapter 5: Command Grammar
|
||||
"In which Understand sentences in the source text are converted into a
|
||||
|
|
|
@ -1023,7 +1023,7 @@ might have gone wrong.
|
|||
NAP_problem_explained = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
if (form == ACTOR_EXPLICITLY_PLAYER) {
|
||||
if (form == ACTOR_EXP_PLAYER) {
|
||||
Problems::issue_problem_segment(
|
||||
"'%4' would have been okay except for using the word 'trying', "
|
||||
"which isn't allowed in a list like this; ");
|
||||
|
|
|
@ -95,10 +95,10 @@ exceptional case where the clause doesn't act on a single I6 global,
|
|||
and in this case we therefore ignore |I6_global_name|.
|
||||
|
||||
=
|
||||
int RTActionPatterns::compile_pattern_match_clause(int f,
|
||||
value_holster *VH, nonlocal_variable *I6_global_variable,
|
||||
void RTActionPatterns::compile_pattern_match_clause(value_holster *VH,
|
||||
nonlocal_variable *I6_global_variable,
|
||||
parse_node *spec, kind *verify_as_kind, int adapt_region) {
|
||||
if (spec == NULL) return f;
|
||||
if (spec == NULL) return;
|
||||
|
||||
parse_node *I6_var_TS = NULL;
|
||||
if (I6_global_variable)
|
||||
|
@ -107,16 +107,16 @@ int RTActionPatterns::compile_pattern_match_clause(int f,
|
|||
int is_parameter = FALSE;
|
||||
if (I6_global_variable == parameter_object_VAR) is_parameter = TRUE;
|
||||
|
||||
return RTActionPatterns::compile_pattern_match_clause_inner(f,
|
||||
VH, I6_var_TS, is_parameter, spec, verify_as_kind, adapt_region);
|
||||
RTActionPatterns::compile_pattern_match_clause_inner(VH,
|
||||
I6_var_TS, is_parameter, spec, verify_as_kind, adapt_region);
|
||||
}
|
||||
|
||||
int RTActionPatterns::compile_pattern_match_clause_inner(int f,
|
||||
value_holster *VH, parse_node *I6_var_TS, int is_parameter,
|
||||
void RTActionPatterns::compile_pattern_match_clause_inner(value_holster *VH,
|
||||
parse_node *I6_var_TS, int is_parameter,
|
||||
parse_node *spec, kind *verify_as_kind, int adapt_region) {
|
||||
int force_proposition = FALSE;
|
||||
|
||||
if (spec == NULL) return f;
|
||||
if (spec == NULL) return;
|
||||
|
||||
LOGIF(ACTION_PATTERN_COMPILATION, "[MPE on $P: $P]\n", I6_var_TS, spec);
|
||||
kind *K = Specifications::to_kind(spec);
|
||||
|
@ -128,7 +128,7 @@ int RTActionPatterns::compile_pattern_match_clause_inner(int f,
|
|||
"say 'Instead of taking a value: ...' because the taking action "
|
||||
"applies to objects; the vaguest you're allowed to be is 'Instead "
|
||||
"of taking an object: ...'.");
|
||||
return TRUE;
|
||||
return;
|
||||
}
|
||||
|
||||
wording C = Descriptions::get_calling(spec);
|
||||
|
@ -264,7 +264,6 @@ int RTActionPatterns::compile_pattern_match_clause_inner(int f,
|
|||
if (Wordings::nonempty(C)) {
|
||||
Produce::up(Emit::tree());
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ =
|
||||
|
@ -320,6 +319,8 @@ void RTActionPatterns::emit_pattern_match(action_pattern *ap, int naming_mode) {
|
|||
@e REQUESTER_DOESNT_EXIST_CPMC
|
||||
@e ACTOR_MATCHES_CPMC
|
||||
@e ACTION_MATCHES_CPMC
|
||||
@e SET_SELF_TO_ACTOR_CPMC
|
||||
@e WHEN_CONDITION_HOLDS_CPMC
|
||||
@e NOUN_EXISTS_CPMC
|
||||
@e NOUN_IS_INP1_CPMC
|
||||
@e SECOND_EXISTS_CPMC
|
||||
|
@ -333,15 +334,10 @@ void RTActionPatterns::emit_pattern_match(action_pattern *ap, int naming_mode) {
|
|||
@e ACTOR_LOCATION_MATCHES_CPMC
|
||||
@e PARAMETER_MATCHES_CPMC
|
||||
@e OPTIONAL_CLAUSE_CPMC
|
||||
@e NOWHERE_CPMC
|
||||
@e SOMEWHERE_CPMC
|
||||
@e NOT_NOWHERE_CPMC
|
||||
@e PRESENCE_OF_MATCHES_CPMC
|
||||
@e PRESENCE_OF_IN_SCOPE_CPMC
|
||||
@e LOOP_OVER_SCOPE_WITH_CALLING_CPMC
|
||||
@e LOOP_OVER_SCOPE_WITHOUT_CALLING_CPMC
|
||||
@e SET_SELF_TO_ACTOR_CPMC
|
||||
@e WHEN_CONDITION_HOLDS_CPMC
|
||||
|
||||
@d MAX_CPM_CLAUSES 256
|
||||
|
||||
|
@ -457,13 +453,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern *
|
|||
CPMC_NEEDED(OPTIONAL_CLAUSE_CPMC, apoc);
|
||||
}
|
||||
|
||||
if (Going::going_nowhere(ap)) {
|
||||
CPMC_NEEDED(NOWHERE_CPMC, NULL);
|
||||
} else if (Going::going_somewhere(ap)) {
|
||||
CPMC_NEEDED(SOMEWHERE_CPMC, NULL);
|
||||
} else if (Going::need_to_check_destination_exists(ap)) {
|
||||
CPMC_NEEDED(NOT_NOWHERE_CPMC, NULL);
|
||||
}
|
||||
PluginCalls::set_pattern_match_requirements(ap, &cpm_count, needed, needed_apoc);
|
||||
|
||||
if (APClauses::spec(ap, IN_THE_PRESENCE_OF_AP_CLAUSE) != NULL) {
|
||||
instance *to_be_present =
|
||||
|
@ -502,10 +492,9 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern *
|
|||
int ranges_from[4], ranges_to[4], ranges_count[4];
|
||||
CPMC_RANGE(0, ACTOR_IS_PLAYER_CPMC, ACTOR_MATCHES_CPMC);
|
||||
CPMC_RANGE(1, ACTION_MATCHES_CPMC, ACTION_MATCHES_CPMC);
|
||||
CPMC_RANGE(2, NOUN_EXISTS_CPMC, LOOP_OVER_SCOPE_WITHOUT_CALLING_CPMC);
|
||||
CPMC_RANGE(2, NOUN_EXISTS_CPMC, NO_DEFINED_CPMC_VALUES);
|
||||
CPMC_RANGE(3, SET_SELF_TO_ACTOR_CPMC, WHEN_CONDITION_HOLDS_CPMC);
|
||||
|
||||
int f = FALSE;
|
||||
int range_to_compile = 0;
|
||||
LocalVariables::begin_condition_emit();
|
||||
|
||||
|
@ -610,6 +599,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern *
|
|||
WRITE_TO(C, "So %d", cpmc);
|
||||
Emit::code_comment(C);
|
||||
DISCARD_TEXT(C)
|
||||
if (PluginCalls::compile_pattern_match_clause(VH, ap, cpmc) == FALSE)
|
||||
switch (cpmc) {
|
||||
case ACTOR_IS_PLAYER_CPMC:
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
|
@ -636,7 +626,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern *
|
|||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case ACTOR_MATCHES_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, I6_actor_VAR, APClauses::spec(ap, ACTOR_AP_CLAUSE), K_object, FALSE);
|
||||
RTActionPatterns::compile_pattern_match_clause(VH, I6_actor_VAR, APClauses::spec(ap, ACTOR_AP_CLAUSE), K_object, FALSE);
|
||||
break;
|
||||
case ACTION_MATCHES_CPMC:
|
||||
RTActions::emit_anl(ap->action_list);
|
||||
|
@ -662,25 +652,25 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern *
|
|||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case NOUN_MATCHES_AS_OBJECT_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, I6_noun_VAR, APClauses::spec(ap, NOUN_AP_CLAUSE),
|
||||
RTActionPatterns::compile_pattern_match_clause(VH, I6_noun_VAR, APClauses::spec(ap, NOUN_AP_CLAUSE),
|
||||
kind_of_noun, FALSE);
|
||||
break;
|
||||
case NOUN_MATCHES_AS_VALUE_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH,
|
||||
RTActionPatterns::compile_pattern_match_clause(VH,
|
||||
RTTemporaryVariables::from_iname(Hierarchy::find(PARSED_NUMBER_HL), kind_of_noun),
|
||||
APClauses::spec(ap, NOUN_AP_CLAUSE), kind_of_noun, FALSE);
|
||||
break;
|
||||
case SECOND_MATCHES_AS_OBJECT_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, I6_second_VAR, APClauses::spec(ap, SECOND_AP_CLAUSE),
|
||||
RTActionPatterns::compile_pattern_match_clause(VH, I6_second_VAR, APClauses::spec(ap, SECOND_AP_CLAUSE),
|
||||
kind_of_second, FALSE);
|
||||
break;
|
||||
case SECOND_MATCHES_AS_VALUE_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH,
|
||||
RTActionPatterns::compile_pattern_match_clause(VH,
|
||||
RTTemporaryVariables::from_iname(Hierarchy::find(PARSED_NUMBER_HL), kind_of_second),
|
||||
APClauses::spec(ap, SECOND_AP_CLAUSE), kind_of_second, FALSE);
|
||||
break;
|
||||
case PLAYER_LOCATION_MATCHES_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, real_location_VAR, APClauses::spec(ap, IN_AP_CLAUSE), K_object, TRUE);
|
||||
RTActionPatterns::compile_pattern_match_clause(VH, real_location_VAR, APClauses::spec(ap, IN_AP_CLAUSE), K_object, TRUE);
|
||||
break;
|
||||
case ACTOR_IN_RIGHT_PLACE_CPMC:
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
|
@ -693,66 +683,28 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern *
|
|||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case ACTOR_LOCATION_MATCHES_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f,
|
||||
VH, actor_location_VAR, APClauses::spec(ap, IN_AP_CLAUSE), K_object, TRUE);
|
||||
RTActionPatterns::compile_pattern_match_clause(VH, actor_location_VAR,
|
||||
APClauses::spec(ap, IN_AP_CLAUSE), K_object, TRUE);
|
||||
break;
|
||||
case PARAMETER_MATCHES_CPMC: {
|
||||
kind *saved_kind = NonlocalVariables::kind(parameter_object_VAR);
|
||||
NonlocalVariables::set_kind(parameter_object_VAR, ap->parameter_kind);
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH,
|
||||
RTActionPatterns::compile_pattern_match_clause(VH,
|
||||
parameter_object_VAR, APClauses::spec(ap, PARAMETRIC_AP_CLAUSE), ap->parameter_kind, FALSE);
|
||||
NonlocalVariables::set_kind(parameter_object_VAR, saved_kind);
|
||||
break;
|
||||
}
|
||||
case OPTIONAL_CLAUSE_CPMC: {
|
||||
kind *K = StackedVariables::get_kind(apoc->stv_to_match);
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH,
|
||||
RTActionPatterns::compile_pattern_match_clause(VH,
|
||||
RTTemporaryVariables::from_existing_variable(apoc->stv_to_match->underlying_var, K),
|
||||
apoc->clause_spec, K, APClauses::opt(apoc, ALLOW_REGION_AS_ROOM_APCOPT));
|
||||
break;
|
||||
}
|
||||
case NOWHERE_CPMC:
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), LOOKUP_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(MSTACK_HL));
|
||||
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(MSTVON_HL));
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (unsigned int) Going::id());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 1);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case SOMEWHERE_CPMC: {
|
||||
parse_node *somewhere = Specifications::from_kind(K_room);
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH,
|
||||
RTTemporaryVariables::from_nve(RTVariables::nve_from_mstack(Going::id(), 1, TRUE),
|
||||
K_object),
|
||||
somewhere, K_object, FALSE);
|
||||
break;
|
||||
}
|
||||
case NOT_NOWHERE_CPMC:
|
||||
Produce::inv_primitive(Emit::tree(), NE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), LOOKUP_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(MSTACK_HL));
|
||||
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(MSTVON_HL));
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (unsigned int) Going::id());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 1);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case PRESENCE_OF_MATCHES_CPMC: {
|
||||
instance *to_be_present =
|
||||
Specifications::object_exactly_described_if_any(APClauses::spec(ap, IN_THE_PRESENCE_OF_AP_CLAUSE));
|
||||
RTActionPatterns::compile_pattern_match_clause(FALSE, VH,
|
||||
RTActionPatterns::compile_pattern_match_clause(VH,
|
||||
RTTemporaryVariables::from_iname(RTInstances::iname(to_be_present), K_object),
|
||||
APClauses::spec(ap, IN_THE_PRESENCE_OF_AP_CLAUSE), K_object, FALSE);
|
||||
break;
|
||||
|
|
70
inform7/runtime-module/Chapter 5/Going.w
Normal file
70
inform7/runtime-module/Chapter 5/Going.w
Normal file
|
@ -0,0 +1,70 @@
|
|||
[RTGoing::] Going.
|
||||
|
||||
Tweaks to compiling APs for the going action.
|
||||
|
||||
@h Compiling action tries.
|
||||
|
||||
@e NOWHERE_CPMC
|
||||
@e SOMEWHERE_CPMC
|
||||
@e NOT_NOWHERE_CPMC
|
||||
|
||||
=
|
||||
int RTGoing::set_pattern_match_requirements(action_pattern *ap, int *cpm, int needed[MAX_CPM_CLAUSES],
|
||||
ap_clause *needed_apoc[MAX_CPM_CLAUSES]) {
|
||||
int cpm_count = *cpm;
|
||||
|
||||
if (GoingPlugin::going_nowhere(ap)) {
|
||||
CPMC_NEEDED(NOWHERE_CPMC, NULL);
|
||||
} else if (GoingPlugin::going_somewhere(ap)) {
|
||||
CPMC_NEEDED(SOMEWHERE_CPMC, NULL);
|
||||
} else if (GoingPlugin::need_to_check_destination_exists(ap)) {
|
||||
CPMC_NEEDED(NOT_NOWHERE_CPMC, NULL);
|
||||
}
|
||||
|
||||
*cpm = cpm_count;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int RTGoing::compile_pattern_match_clause(value_holster *VH, action_pattern *ap, int cpmc) {
|
||||
switch (cpmc) {
|
||||
case NOWHERE_CPMC:
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), LOOKUP_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(MSTACK_HL));
|
||||
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(MSTVON_HL));
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (unsigned int) GoingPlugin::id());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 1);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||
Produce::up(Emit::tree());
|
||||
return TRUE;
|
||||
case SOMEWHERE_CPMC: {
|
||||
parse_node *somewhere = Specifications::from_kind(K_room);
|
||||
RTActionPatterns::compile_pattern_match_clause(VH,
|
||||
RTTemporaryVariables::from_nve(RTVariables::nve_from_mstack(GoingPlugin::id(), 1, TRUE),
|
||||
K_object),
|
||||
somewhere, K_object, FALSE);
|
||||
return TRUE;
|
||||
}
|
||||
case NOT_NOWHERE_CPMC:
|
||||
Produce::inv_primitive(Emit::tree(), NE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), LOOKUP_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(MSTACK_HL));
|
||||
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(MSTVON_HL));
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (unsigned int) GoingPlugin::id());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 1);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||
Produce::up(Emit::tree());
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
|
@ -55,7 +55,7 @@ int LoopingOverScope::compilation_coroutine(void) {
|
|||
value_holster VH = Holsters::new(INTER_VAL_VHMODE);
|
||||
if (los->what_to_find) {
|
||||
parse_node *lv_sp = Lvalues::new_LOCAL_VARIABLE(EMPTY_WORDING, it_lv);
|
||||
RTActionPatterns::compile_pattern_match_clause_inner(FALSE, &VH,
|
||||
RTActionPatterns::compile_pattern_match_clause_inner(&VH,
|
||||
lv_sp, FALSE, los->what_to_find, K_object, FALSE);
|
||||
} else
|
||||
Produce::val(Emit::tree(), K_truth_state, LITERAL_IVAL, 0);
|
||||
|
|
|
@ -77,3 +77,4 @@ Chapter 5: Plugin Support
|
|||
Looping Over Scope
|
||||
Named Action Patterns
|
||||
Action Patterns
|
||||
Going
|
||||
|
|
|
@ -3342,7 +3342,6 @@ int Dash::test_flag(parse_node *p, int flag) {
|
|||
|
||||
=
|
||||
int Dash::validate_conditional_clause(parse_node *spec) {
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Validating conditional clause: $P\n", spec);
|
||||
if (spec == NULL) return TRUE;
|
||||
if (Node::is(spec, UNKNOWN_NT)) return FALSE;
|
||||
if (Dash::check_condition(spec) == NEVER_MATCH) return FALSE;
|
||||
|
@ -3384,7 +3383,6 @@ int Dash::validate_parameter(parse_node *spec, kind *K) {
|
|||
parse_node *vts;
|
||||
kind *kind_found = NULL;
|
||||
if (spec == NULL) return TRUE;
|
||||
LOGIF(ACTION_PATTERN_PARSING, "Validating parameter in action pattern: $P (%u)\n", spec, K);
|
||||
if (Node::is(spec, UNKNOWN_NT)) goto DontValidate;
|
||||
|
||||
if (Specifications::is_description(spec)) {
|
||||
|
@ -3417,9 +3415,6 @@ int Dash::validate_parameter(parse_node *spec, kind *K) {
|
|||
return TRUE;
|
||||
|
||||
DontValidate:
|
||||
LOGIF(ACTION_PATTERN_PARSING,
|
||||
"Fails to validate for type-checking reasons: wanted %u, found %u\n",
|
||||
K, kind_found);
|
||||
last_spec_failing_to_validate = Node::duplicate(spec);
|
||||
last_kind_failing_to_validate = K;
|
||||
last_kind_found_failing_to_validate = kind_found;
|
||||
|
|
|
@ -5,11 +5,11 @@ Size of lexicon: 3098 excerpt meanings
|
|||
29 words have a middle list: longest belongs to to (with 4 meanings)
|
||||
108 words have a subset list: longest belongs to street (with 4 meanings)
|
||||
|
||||
Number of attempts to retrieve: 106243
|
||||
of which unsuccessful: 88640
|
||||
of which successful: 17603
|
||||
Number of attempts to retrieve: 106240
|
||||
of which unsuccessful: 88638
|
||||
of which successful: 17602
|
||||
|
||||
Total attempts to match against excerpt meanings: 253387
|
||||
of which, total with incorrect hash codes: 231381
|
||||
of which, total with correct hash codes: 22006
|
||||
of which, total which matched: 19273
|
||||
Total attempts to match against excerpt meanings: 253372
|
||||
of which, total with incorrect hash codes: 231367
|
||||
of which, total with correct hash codes: 22005
|
||||
of which, total which matched: 19272
|
||||
|
|
Loading…
Reference in a new issue