mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 08:34:22 +03:00
Refactored booking lists
This commit is contained in:
parent
543b4fe3ba
commit
3db3fa58b0
|
@ -469,7 +469,7 @@ a given rule appears in, and (within limits) where. A simple example:
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">any</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-rpr.html#SP15_1_3" class="named-paragraph-link"><span class="named-paragraph">Detach from all rulebooks</span><span class="named-paragraph-number">15.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">any</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-rpr.html#SP15_1_3" class="named-paragraph-link"><span class="named-paragraph">Detach from all rulebooks</span><span class="named-paragraph-number">15.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">sense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-rpr.html#SP15_1_4" class="named-paragraph-link"><span class="named-paragraph">Detach only from this rulebook</span><span class="named-paragraph-number">15.1.4</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">sense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-rpr.html#SP15_1_4" class="named-paragraph-link"><span class="named-paragraph">Detach only from this rulebook</span><span class="named-paragraph-number">15.1.4</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_rule_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rules::Bookings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">given_rule</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_rule_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RuleBookings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">given_rule</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rules::set_kind_from</span><span class="plain-syntax">(</span><span class="identifier-syntax">given_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">given_rulebook</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Rules::set_kind_from</span><span class="plain-syntax">(</span><span class="identifier-syntax">given_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">given_rulebook</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">relative_rule</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">relative_rule</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Relative to which = %W\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">relative_rule</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Relative to which = %W\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">relative_rule</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -156,6 +156,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">activity_list_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">activity_list_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">applicability_constraint_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">applicability_constraint_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">booking_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">booking_CLASS</span>
|
||||||
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">booking_list_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">comparative_bp_data_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">comparative_bp_data_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">condition_of_subject_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">condition_of_subject_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">counting_data_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">counting_data_CLASS</span>
|
||||||
|
@ -188,6 +189,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
||||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">activity_list</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">activity_list</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">applicability_constraint</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">applicability_constraint</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">booking</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">booking</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">booking_list</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">comparative_bp_data</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">comparative_bp_data</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">condition_of_subject</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">condition_of_subject</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">counting_data</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">counting_data</span><span class="plain-syntax">)</span>
|
||||||
|
|
|
@ -72,7 +72,7 @@ function togglePopup(material_id) {
|
||||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">core</a></li><li><a href="index.html#3">Chapter 3: Plugins</a></li><li><b>Plugin Calls</b></li></ul></div>
|
<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>
|
<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 the actions plugin</a></li><li><a href="3-pc.html#SP45">§45. 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 imperative plugin</a></li><li><a href="3-pc.html#SP35">§35. Influencing the actions plugin</a></li><li><a href="3-pc.html#SP46">§46. 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
|
<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
|
with the plugins; put another way, it is also an API for the plugins to
|
||||||
|
@ -529,7 +529,24 @@ 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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<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
|
<p class="commentary firstcommentary"><a id="SP34" class="paragraph-anchor"></a><b>§34. Influencing the imperative plugin. </b>Called from <a href="../imperative-module/2-rb.html" class="internal">Rule Bookings (in imperative)</a> to give plugins a chance to move
|
||||||
|
automatically placed rules from one rulebook to another. The actions plugin
|
||||||
|
uses this to break up what would otherwise be unwieldy before and after
|
||||||
|
rulebooks into smaller ones for each action.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary">If making a diversion, the plugin should write the new rulebook into <span class="extract"><span class="extract-syntax">new_owner</span></span>
|
||||||
|
and return <span class="extract"><span class="extract-syntax">TRUE</span></span>; and otherwise <span class="extract"><span class="extract-syntax">FALSE</span></span>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">DIVERT_RULE_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::divert_rule</span><span class="plain-syntax">(</span><span class="identifier-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> **</span><span class="identifier-syntax">new_owner</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">DIVERT_RULE_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">original_owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_owner</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. 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.
|
therefore only when it is active.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -544,7 +561,7 @@ created. For example, the going plugin uses this to spot the arrival of "going".
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<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
|
<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 invite plugins to change the
|
||||||
action pattern clause ID associated with a given action variable. This may be
|
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
|
needed in order to cross-reference between multiple such clauses, as with
|
||||||
the going action variables.
|
the going action variables.
|
||||||
|
@ -558,7 +575,7 @@ the going action variables.
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<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
|
<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 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.
|
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>
|
</p>
|
||||||
|
|
||||||
|
@ -569,7 +586,7 @@ name for the debugging log for any new clause ID <span class="extract"><span cla
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<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
|
<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 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
|
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>.
|
this is not given, then the aspect will be <span class="extract"><span class="extract-syntax">MISC_APCA</span></span>.
|
||||||
</p>
|
</p>
|
||||||
|
@ -581,7 +598,7 @@ this is not given, then the aspect will be <span class="extract"><span class="ex
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<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
|
<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 give plugins a chance to
|
||||||
decide which AP is more specific, on the basis of the extra clauses defined
|
decide which AP is more specific, on the basis of the extra clauses defined
|
||||||
in the plugin.
|
in the plugin.
|
||||||
</p>
|
</p>
|
||||||
|
@ -605,7 +622,7 @@ to let the usual machinery take its course.
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<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
|
<p class="commentary firstcommentary"><a id="SP40" class="paragraph-anchor"></a><b>§40. </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.
|
matching an action variable has just been added to an action pattern.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -616,7 +633,7 @@ matching an action variable has just been added to an action pattern.
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<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
|
<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 normal process of evaluating the meaning of text in an action pattern
|
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
|
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
|
to detect that the <span class="extract"><span class="extract-syntax">NOUN_AP_CLAUSE</span></span>, with text "nowhere", should not be parsed
|
||||||
|
@ -635,7 +652,7 @@ text of the clause in the normal way.
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</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
|
<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 give plugins a chance to intervene in
|
||||||
the type-checking process for a clause. Ordinarily, this would just check that
|
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>
|
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.
|
then it must be a value compatible with <span class="extract"><span class="extract-syntax">K</span></span> or a description of such.
|
||||||
|
@ -653,7 +670,7 @@ or <span class="extract"><span class="extract-syntax">FALSE</span></span> (it is
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</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
|
<p class="commentary firstcommentary"><a id="SP43" class="paragraph-anchor"></a><b>§43. </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.
|
previously by a <span class="extract"><span class="extract-syntax">PARSE_AP_CLAUSE_PLUG</span></span> call: see above.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -664,7 +681,7 @@ previously by a <span class="extract"><span class="extract-syntax">PARSE_AP_CLAU
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<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
|
<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 assembling the requirement
|
||||||
clauses for compiling a mattern match; this gives plugins a chance to act
|
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.
|
extra stipulations, which are not explicit in clauses already in the pattern.
|
||||||
</p>
|
</p>
|
||||||
|
@ -677,7 +694,7 @@ extra stipulations, which are not explicit in clauses already in the pattern.
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</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
|
<p class="commentary firstcommentary"><a id="SP45" class="paragraph-anchor"></a><b>§45. </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>.
|
requirements set by <span class="extract"><span class="extract-syntax">SET_PATTERN_MATCH_REQUIREMENTS_PLUG</span></span>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -689,7 +706,7 @@ requirements set by <span class="extract"><span class="extract-syntax">SET_PATTE
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</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)
|
<p class="commentary firstcommentary"><a id="SP46" class="paragraph-anchor"></a><b>§46. 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,
|
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.
|
the regions plugin uses this to put colour chips next to names of regions.
|
||||||
</p>
|
</p>
|
||||||
|
@ -701,7 +718,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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<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)
|
<p class="commentary firstcommentary"><a id="SP47" class="paragraph-anchor"></a><b>§47. </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,
|
to the textual description of an instance in the spatial model. For example,
|
||||||
the mapping plugin uses this to say where a door leads.
|
the mapping plugin uses this to say where a door leads.
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -157,32 +157,98 @@ a given action:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Actions::fragment_rulebook</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Actions::fragment_rulebook</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">Actions::fragment_rulebook</span></span>:<br/><a href="4-act.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CHECK_RB</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">check_rules</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CHECK_RB</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">check_rules</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CARRY_OUT_RB</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">carry_out_rules</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CARRY_OUT_RB</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">carry_out_rules</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">REPORT_RB</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">report_rules</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">REPORT_RB</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">report_rules</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"asked for peculiar fragmented rulebook"</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"asked for peculiar fragmented rulebook"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Actions::divert_to_another_actions_rulebook</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_an</span><span class="plain-syntax">,</span>
|
<span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Actions::divert_to_another_actions_rulebook</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">Actions::divert_to_another_actions_rulebook</span></span>:<br/><a href="4-act.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_an</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">new_an</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">new_an</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">old_an</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">old_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">old_an</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">old_an</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax"> == </span><span class="identifier-syntax">old_an</span><span class="plain-syntax">-></span><span class="element-syntax">check_rules</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_an</span><span class="plain-syntax">-></span><span class="element-syntax">check_rules</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax"> == </span><span class="identifier-syntax">old_an</span><span class="plain-syntax">-></span><span class="element-syntax">check_rules</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_an</span><span class="plain-syntax">-></span><span class="element-syntax">check_rules</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax"> == </span><span class="identifier-syntax">old_an</span><span class="plain-syntax">-></span><span class="element-syntax">carry_out_rules</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_an</span><span class="plain-syntax">-></span><span class="element-syntax">carry_out_rules</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax"> == </span><span class="identifier-syntax">old_an</span><span class="plain-syntax">-></span><span class="element-syntax">carry_out_rules</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_an</span><span class="plain-syntax">-></span><span class="element-syntax">carry_out_rules</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax"> == </span><span class="identifier-syntax">old_an</span><span class="plain-syntax">-></span><span class="element-syntax">report_rules</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_an</span><span class="plain-syntax">-></span><span class="element-syntax">report_rules</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax"> == </span><span class="identifier-syntax">old_an</span><span class="plain-syntax">-></span><span class="element-syntax">report_rules</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_an</span><span class="plain-syntax">-></span><span class="element-syntax">report_rules</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">old_rulebook</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>The <a href="5-pp.html" class="internal">Parsing Plugin</a> attaches command grammar to an action, but that's not
|
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>And this is where the actions plugin moves rules from their normal rulebooks:
|
||||||
|
</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">Actions::divert_rule</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">Actions::divert_rule</span></span>:<br/>Actions Plugin - <a href="4-ap.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> **</span><span class="identifier-syntax">new_owner</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rules::get_defn_as_phrase</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rulebooks::requires_specific_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax">)) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">waiver</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Phrases::Usage::get_prewhile_text</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="identifier-syntax">usage_data</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">)) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_WORDING</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">PW</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-nap.html#SP3" class="function-link"><span class="function-syntax">NamedActionPatterns::by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">)))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-act.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_MultipleCCR</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">anyone</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP5" class="function-link"><span class="function-syntax">ParseActionPatterns::list_of_actions_only</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">, &</span><span class="identifier-syntax">anyone</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Looking at '%W' (anyone flag %d):\n$L\n"</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax">, </span><span class="identifier-syntax">anyone</span><span class="plain-syntax">, </span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP24" class="function-link"><span class="function-syntax">ActionNameLists::get_best_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Best action is $l\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Rules::set_marked_for_anyone</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">anyone</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">waiver</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CHECK_RB</span><span class="plain-syntax">]) </span><span class="identifier-syntax">waiver</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CARRY_OUT_RB</span><span class="plain-syntax">]) </span><span class="identifier-syntax">waiver</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">REPORT_RB</span><span class="plain-syntax">]) </span><span class="identifier-syntax">waiver</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="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">waiver</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-ann.html#SP13" class="function-link"><span class="function-syntax">ActionNameNames::longest_nounless</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">, </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">an</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">waiver</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-act.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_MultipleCCR</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CHECK_RB</span><span class="plain-syntax">]) {</span>
|
||||||
|
<span class="plain-syntax"> *</span><span class="identifier-syntax">new_owner</span><span class="plain-syntax"> = </span><a href="4-act.html#SP4" class="function-link"><span class="function-syntax">Actions::fragment_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CHECK_RB</span><span 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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CARRY_OUT_RB</span><span class="plain-syntax">]) {</span>
|
||||||
|
<span class="plain-syntax"> *</span><span class="identifier-syntax">new_owner</span><span class="plain-syntax"> = </span><a href="4-act.html#SP4" class="function-link"><span class="function-syntax">Actions::fragment_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">CARRY_OUT_RB</span><span 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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">original_owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">REPORT_RB</span><span class="plain-syntax">]) {</span>
|
||||||
|
<span class="plain-syntax"> *</span><span class="identifier-syntax">new_owner</span><span class="plain-syntax"> = </span><a href="4-act.html#SP4" class="function-link"><span class="function-syntax">Actions::fragment_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">REPORT_RB</span><span 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">else</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> *</span><span class="identifier-syntax">new_owner</span><span class="plain-syntax"> = </span><a href="4-act.html#SP4" class="function-link"><span class="function-syntax">Actions::divert_to_another_actions_rulebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">original_owner</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>§5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_MultipleCCR</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">PW</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_MultipleCCR</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">"You wrote %1, but the situation this refers to ('%2') is not a single "</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="string-syntax">"action. Rules in the form of 'check', 'carry out' and 'report' are "</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="string-syntax">"tied to specific actions, and must give a single explicit action name - "</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="string-syntax">"even if they then go on to very complicated conditions about any nouns "</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="string-syntax">"also involved. So 'Check taking something: ...' is fine, but not 'Check "</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="string-syntax">"taking or dropping something: ...' or 'Check doing something: ...' - "</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="string-syntax">"the former names two actions, the latter none."</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||||
|
<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-act.html#SP5">§5</a> (twice).</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>The <a href="5-pp.html" class="internal">Parsing Plugin</a> attaches command grammar to an action, but that's not
|
||||||
our concern here:
|
our concern here:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Actions::add_gl</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">Actions::add_gl</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Actions::add_gl</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">Actions::add_gl</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">command_parser_grammar_producing_this</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">an</span><span class="plain-syntax">-></span><span class="element-syntax">command_parser_grammar_producing_this</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">command_parser_grammar_producing_this</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</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">command_parser_grammar_producing_this</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||||
|
@ -190,13 +256,13 @@ our concern here:
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">command_parser_grammar_producing_this</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</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">command_parser_grammar_producing_this</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</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">Actions::remove_all_command_grammar</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">Actions::remove_all_command_grammar</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP17">§17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Actions::remove_all_command_grammar</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">Actions::remove_all_command_grammar</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP17">§17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">command_parser_grammar_producing_this</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">command_parser_grammar_producing_this</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">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</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">cg</span><span class="plain-syntax">, </span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax">) </span><a href="5-cg.html#SP10" class="function-link"><span class="function-syntax">CommandGrammars::remove_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</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">cg</span><span class="plain-syntax">, </span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax">) </span><a href="5-cg.html#SP10" class="function-link"><span class="function-syntax">CommandGrammars::remove_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>Most actions are given automatically generated Inter identifiers, but a few
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Most actions are given automatically generated Inter identifiers, but a few
|
||||||
have to correspond to names referenced in <a href="../WorldModelKit/index.html" class="internal">WorldModelKit</a>, so:
|
have to correspond to names referenced in <a href="../WorldModelKit/index.html" class="internal">WorldModelKit</a>, so:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
|
@ -638,7 +638,7 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::get_best_action</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::get_best_action</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::get_best_action</span></span>:<br/>Actions - <a href="4-act.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><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::positive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::positive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">posn</span><span class="plain-syntax"> = -1;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">posn</span><span class="plain-syntax"> = -1;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">choice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">choice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -657,7 +657,7 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. Duplication. </b></p>
|
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. Duplication. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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::duplicate_entry</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::duplicate_entry</span></span>:<br/><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">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::duplicate_entry</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::duplicate_entry</span></span>:<br/><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="plain-syntax"> </span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_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">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_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="identifier-syntax">new_entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">anl_clauses</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_entry</span><span class="plain-syntax">-></span><span class="element-syntax">parsing_data</span><span class="plain-syntax">.</span><span class="element-syntax">anl_clauses</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -672,7 +672,7 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. Logging. </b></p>
|
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. Logging. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log</span></span>:<br/>IF Module - <a href="1-im.html#SP2">§2</a>, <a href="1-im.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log</span></span>:<br/>IF Module - <a href="1-im.html#SP2">§2</a>, <a href="1-im.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-anl>"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-anl>"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
@ -695,7 +695,7 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_entry</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log_entry</span></span>:<br/>IF Module - <a href="1-im.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_entry</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log_entry</span></span>:<br/>IF Module - <a href="1-im.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-entry>"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-entry>"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
@ -708,13 +708,13 @@ is no best action. (For example, in "throwing or removing something".)
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_clause</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_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><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><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">": %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="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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_briefly</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::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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-anl>"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-anl>"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
@ -758,7 +758,7 @@ something other than something — or <span class="extract"><span class="ext
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">;</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="reserved-syntax">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="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::parse</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::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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::mismatched_brackets</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tense</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">anl_parsing_tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">tense</span><span class="plain-syntax">;</span>
|
||||||
|
@ -891,7 +891,7 @@ or "irreverent behaviour [in-presence: the Bishop]".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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('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="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::nap_entry</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::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="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="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>
|
<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>
|
||||||
|
@ -1094,7 +1094,7 @@ still has a <span class="extract"><span class="extract-syntax">TAIL_AP_CLAUSE</s
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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('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="reserved-syntax">anl_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::ramify</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::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">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><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>
|
<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>
|
||||||
|
@ -1115,7 +1115,7 @@ actually is:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::explode</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</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">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">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>
|
<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>
|
||||||
|
@ -1138,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">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">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">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('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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::explode_clause</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::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">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="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>
|
<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>
|
||||||
|
@ -1257,7 +1257,7 @@ clauses anyway, this will never be too bad.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::detonate</span><button class="popup" onclick="togglePopup('usagePopup46')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup46">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">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>
|
<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>
|
||||||
|
|
||||||
|
|
|
@ -304,7 +304,7 @@ number of words.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameNames::longest_nounless</span><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">posn</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameNames::longest_nounless</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ActionNameNames::longest_nounless</span></span>:<br/>Actions - <a href="4-act.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">posn</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::can_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::can_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||||
|
|
|
@ -114,6 +114,7 @@ description of an action which may have happened in the past: for example,
|
||||||
<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_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">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#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">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">DIVERT_RULE_PLUG</span><span class="plain-syntax">, </span><a href="4-act.html#SP5" class="function-link"><span class="function-syntax">Actions::divert_rule</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">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">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPLETE_MODEL_PLUG</span><span class="plain-syntax">, </span><a href="4-ap.html#SP6" class="function-link"><span class="function-syntax">ActionsPlugin::complete_model</span></a><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPLETE_MODEL_PLUG</span><span class="plain-syntax">, </span><a href="4-ap.html#SP6" class="function-link"><span class="function-syntax">ActionsPlugin::complete_model</span></a><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ an action.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">nap</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">nap</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<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="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><br/>Actions - <a href="4-act.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexicon::retrieve</span><span class="plain-syntax">(</span><span class="identifier-syntax">NAMED_AP_MC</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexicon::retrieve</span><span class="plain-syntax">(</span><span class="identifier-syntax">NAMED_AP_MC</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><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">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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -182,7 +182,7 @@ still be incomprehensible.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::list_of_actions_only</span><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anyone</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::list_of_actions_only</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">ParseActionPatterns::list_of_actions_only</span></span>:<br/>Actions - <a href="4-act.html#SP5">§5</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">anyone</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">FALSE</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">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">saved</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP2" class="function-link"><span class="function-syntax">ParseActionPatterns::enter_mode</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PERMIT_TRYING_OMISSION</span><span class="plain-syntax"> + </span><span class="constant-syntax">SCANNING_ANL_ONLY</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</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP2" class="function-link"><span class="function-syntax">ParseActionPatterns::enter_mode</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PERMIT_TRYING_OMISSION</span><span class="plain-syntax"> + </span><span class="constant-syntax">SCANNING_ANL_ONLY</span><span class="plain-syntax">);</span>
|
||||||
|
@ -450,7 +450,7 @@ what passes down to Level Four.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::level_three</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">ParseActionPatterns::level_three</span></span>:<br/><a href="4-pap.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::level_three</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">ParseActionPatterns::level_three</span></span>:<br/><a href="4-pap.html#SP10">§10</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="named-paragraph-container code-font"><a href="4-pap.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">There has to be a participle here somewhere</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">There has to be a participle here somewhere</span><span class="named-paragraph-number">11.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">"Parse action pattern (tense %d): %W\n"</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"Parse action pattern (tense %d): %W\n"</span><span class="plain-syntax">,</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">W</span><span class="plain-syntax">);</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">W</span><span class="plain-syntax">);</span>
|
||||||
|
@ -504,7 +504,7 @@ That said, it does enable, for example, the cool rule:
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">pronominal_action_wording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING_INIT</span><span class="plain-syntax">;</span>
|
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">pronominal_action_wording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING_INIT</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::level_four</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">ParseActionPatterns::level_four</span></span>:<br/><a href="4-pap.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::level_four</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">ParseActionPatterns::level_four</span></span>:<br/><a href="4-pap.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><ap-four-pronominal></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><ap-four-pronominal></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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">pronominal_action_wording</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">pronominal_action_wording</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">"Pronominal is %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="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">"Pronominal is %W\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -324,7 +324,7 @@ dropping action":
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::remove_action</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">CommandGrammars::remove_action</span></span>:<br/>Actions - <a href="4-act.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::remove_action</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">CommandGrammars::remove_action</span></span>:<br/>Actions - <a href="4-act.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="constant-syntax">CG_IS_COMMAND</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="constant-syntax">CG_IS_COMMAND</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP6" class="function-link"><span class="function-syntax">CGLines::list_remove</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="5-cgl.html#SP6" class="function-link"><span class="function-syntax">CGLines::list_remove</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
|
@ -169,7 +169,7 @@ removing it from action. That's a feature only seen in lines for
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="element-syntax">compilation_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RTCommandGrammarLines::new_cd</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="element-syntax">compilation_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RTCommandGrammarLines::new_cd</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="element-syntax">indexing_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CommandsIndex::new_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="element-syntax">indexing_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CommandsIndex::new_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ac</span><span class="plain-syntax">) </span><a href="4-act.html#SP5" class="function-link"><span class="function-syntax">Actions::add_gl</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ac</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ac</span><span class="plain-syntax">) </span><a href="4-act.html#SP6" class="function-link"><span class="function-syntax">Actions::add_gl</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ac</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
|
@ -816,7 +816,7 @@ it, one at a time, by previous Understand sentences.
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Nothing blocks. </b>Again, some semantic checks, but the real work is delegated to
|
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Nothing blocks. </b>Again, some semantic checks, but the real work is delegated to
|
||||||
<a href="4-act.html#SP5" class="internal">Actions::remove_all_command_grammar</a>.
|
<a href="4-act.html#SP6" class="internal">Actions::remove_all_command_grammar</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
@ -834,7 +834,7 @@ it, one at a time, by previous Understand sentences.
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">an_reference</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">an_reference</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">GRAMMAR_CONSTRUCTION</span><span class="plain-syntax">, </span><span class="string-syntax">"Understand nothing as: $l\n"</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">GRAMMAR_CONSTRUCTION</span><span class="plain-syntax">, </span><span class="string-syntax">"Understand nothing as: $l\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-act.html#SP5" class="function-link"><span class="function-syntax">Actions::remove_all_command_grammar</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="4-act.html#SP6" class="function-link"><span class="function-syntax">Actions::remove_all_command_grammar</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
|
@ -106,34 +106,6 @@ picking things up, or going from place to place.
|
||||||
provides for command parsing. Projects using other mechanisms for having
|
provides for command parsing. Projects using other mechanisms for having
|
||||||
the reader interact with them do not need this, and can deactivate the plugin.
|
the reader interact with them do not need this, and can deactivate the plugin.
|
||||||
</li></ul>
|
</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>Grammar is organised in a three-level hierarchy:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<ul class="items"><li>(a) A command grammar (CG) is a small independent grammar of alternative
|
|
||||||
formulations for some concept: for instance, the possible commands beginning
|
|
||||||
TAKE, or the possible verbal forms of numbers. Each CG is a list of CGLs, and
|
|
||||||
an individual CGL must belong to exactly one CG. There are five different
|
|
||||||
types of CG, differentiated mostly by the purpose to which the CG is put:
|
|
||||||
<ul class="items"><li>(1) <span class="extract"><span class="extract-syntax">CG_IS_COMMAND</span></span>. An imperative verbal command at run-time.
|
|
||||||
</li><li>(2) <span class="extract"><span class="extract-syntax">CG_IS_TOKEN</span></span>. A square-bracketed token in other grammar.
|
|
||||||
</li><li>(3) <span class="extract"><span class="extract-syntax">CG_IS_SUBJECT</span></span>. A noun phrase at run time: a name for an object.
|
|
||||||
</li><li>(4) <span class="extract"><span class="extract-syntax">CG_IS_VALUE</span></span>. A noun phrase at run time: a name for a value.
|
|
||||||
</li><li>(5) <span class="extract"><span class="extract-syntax">CG_IS_CONSULT</span></span>. A pattern to match in part of a command (such as "consult").
|
|
||||||
</li><li>(6) <span class="extract"><span class="extract-syntax">CG_IS_PROPERTY_NAME</span></span>. A noun phrase at run time: a name for one
|
|
||||||
possibility for an either/or property, say "open" or "fixed in place".
|
|
||||||
</li></ul>
|
|
||||||
<li>(b) A grammar line (CGL) is a single possibility within a CG: for
|
|
||||||
example, the line matching <span class="extract"><span class="extract-syntax">"take [something]"</span></span> in the CG for the TAKE
|
|
||||||
command. Each CGL is a list of tokens, and an individual token must belong
|
|
||||||
to exactly one CGL.
|
|
||||||
</li><li>(c) A grammar token (GTOK) is a single particle of a CGL: for
|
|
||||||
example, <span class="extract"><span class="extract-syntax">'take'</span></span> and <span class="extract"><span class="extract-syntax">something</span></span> are tokens.
|
|
||||||
</li></ul>
|
|
||||||
<p class="commentary">The picture is not quite so hierarchical as it looks, though, because
|
|
||||||
a CG naming a token can be used as a token inside other CGs. We need to
|
|
||||||
be careful that this does not lead to infinite regress: see below.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrentchapter">P</li><li class="progresscurrent">wtmd</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="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="1-im.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrentchapter">P</li><li class="progresscurrent">wtmd</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="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="1-im.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
|
@ -788,7 +788,7 @@ values, of the kind to which the activity applies.
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="2-sv.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresssection"><a href="2-rlb.html">rlb</a></li><li class="progresssection"><a href="2-fao.html">fao</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresscurrent">act</li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-itp.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="2-sv.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresssection"><a href="2-bl.html">bl</a></li><li class="progresssection"><a href="2-rlb.html">rlb</a></li><li class="progresssection"><a href="2-fao.html">fao</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresscurrent">act</li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-itp.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
479
docs/imperative-module/2-bl.html
Normal file
479
docs/imperative-module/2-bl.html
Normal file
|
@ -0,0 +1,479 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Booking Lists</title>
|
||||||
|
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta http-equiv="Content-Language" content="en-gb">
|
||||||
|
|
||||||
|
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
<script>
|
||||||
|
function togglePopup(material_id) {
|
||||||
|
var popup = document.getElementById(material_id);
|
||||||
|
popup.classList.toggle("show");
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
<script>
|
||||||
|
MathJax = {
|
||||||
|
tex: {
|
||||||
|
inlineMath: '$', '$'], ['\\(', '\\)'
|
||||||
|
},
|
||||||
|
svg: {
|
||||||
|
fontCache: 'global'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script type="text/javascript" id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<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="index.html"><span class="selectedlink">imperative</span></a></li>
|
||||||
|
<li><a href="../runtime-module/index.html">runtime</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 'Booking Lists' 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">imperative</a></li><li><a href="index.html#2">Chapter 2: Rules and Rulebooks</a></li><li><b>Booking Lists</b></li></ul></div>
|
||||||
|
<p class="purpose">Booking lists are linked lists of rule bookings.</p>
|
||||||
|
|
||||||
|
<ul class="toc"><li><a href="2-bl.html#SP1">§1. Introduction</a></li><li><a href="2-bl.html#SP4">§4. Creation</a></li><li><a href="2-bl.html#SP5">§5. Addition</a></li><li><a href="2-bl.html#SP6">§6. Removal</a></li><li><a href="2-bl.html#SP7">§7. Scanning lists for their contents</a></li><li><a href="2-bl.html#SP8">§8. Compilation of rule definitions for rulebook</a></li></ul><hr class="tocbar">
|
||||||
|
|
||||||
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Introduction. </b>Bookings are intended to be bound together in linked lists, each of which
|
||||||
|
represents the interior pages of a single rulebook.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list_head</span><span class="plain-syntax">; </span><span class="comment-syntax"> the dummy entry at the front</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||||
|
<span class="plain-syntax">} </span><span class="reserved-syntax">booking_list</span><span class="plain-syntax">;</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>The structure booking_list is private to this section.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>There are only three operations on lists: creation, addition of a booking,
|
||||||
|
and removal of a booking. The following invariants are preserved:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul class="items"><li>(a) The list head is a dummy, i.e., meaningless, booking which has never been
|
||||||
|
the subject of any addition operation and has never moved.
|
||||||
|
</li><li>(b) The only <span class="extract"><span class="extract-syntax">FIRST_PLACEMENT</span></span> entries in the list immediately follow the list
|
||||||
|
head. Those which were added explicitly as first-placed are in reverse order
|
||||||
|
of addition to the list.
|
||||||
|
</li><li>(c) The only <span class="extract"><span class="extract-syntax">LAST_PLACEMENT</span></span> entries in the list are at the end. Those which
|
||||||
|
were added explicitly as last-placed are in order of addition to the list.
|
||||||
|
</li><li>(d) If R and S are middle-placed rules which were placed in the list within
|
||||||
|
the same range (say, both anywhere, or both "after T" or "before U") and R
|
||||||
|
precedes S, then either R is more specific than S, or they are equally specific
|
||||||
|
and R was added to the list before S.
|
||||||
|
</li><li>(e) The list never contains duplicates, that is, never contains two bookings
|
||||||
|
whose rules are equal, in the sense of <a href="2-rls.html#SP13" class="internal">Rules::eq</a>.
|
||||||
|
</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>These macros are useful for iterating through the contents in sequence;
|
||||||
|
note that <span class="extract"><span class="extract-syntax">br</span></span> is never equal to the dummy head, and that <span class="extract"><span class="extract-syntax">pr</span></span> is never <span class="extract"><span class="extract-syntax">NULL</span></span> —
|
||||||
|
though it is initially equal to the dummy, which of course is the point of
|
||||||
|
having the dummy.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">br</span><span class="plain-syntax">=(</span><span class="identifier-syntax">L</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">list_head</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">br</span><span class="plain-syntax">; </span><span class="identifier-syntax">br</span><span class="plain-syntax">=</span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_BOOKINGS_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">pr</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">br</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">list_head</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">, *</span><span class="identifier-syntax">pr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">list_head</span><span class="plain-syntax">; </span><span class="identifier-syntax">br</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">pr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">br</span><span class="plain-syntax"> = </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">)</span>
|
||||||
|
</pre>
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BookingLists::log</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">BookingLists::log</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP8_1">§8.1</a><br/>Rulebooks - <a href="2-rlb.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-booked-rule-list>\n"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><a href="2-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::length</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">t</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<empty-booked-rule-list>\n"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</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">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" %d/%d. $b\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">s</span><span class="plain-syntax">++, </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">br</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. Creation. </b>A new list is a dummy header (see (a) above):
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="function-syntax">BookingLists::new</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">BookingLists::new</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">list_head</span><span class="plain-syntax"> = </span><a href="2-rb.html#SP3" class="function-link"><span class="function-syntax">RuleBookings::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</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. Addition. </b>The following is called when a booking <span class="extract"><span class="extract-syntax">br</span></span> for the rule R needs to be placed
|
||||||
|
into list <span class="extract"><span class="extract-syntax">L</span></span>, which is the contents of a rulebook we will call B. This happens,
|
||||||
|
for example, in response to an an assertion like "R is listed after S in B";
|
||||||
|
in that cast the <span class="extract"><span class="extract-syntax">side</span></span> would be <span class="extract"><span class="extract-syntax">AFTER_SIDE</span></span>, and the <span class="extract"><span class="extract-syntax">ref_rule</span></span> would be S.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary">It is also possible to specify a <span class="extract"><span class="extract-syntax">placing</span></span>. For example, for a rule described
|
||||||
|
as "First every turn rule: ...", this would be added to the every turn rulebook
|
||||||
|
with placing <span class="extract"><span class="extract-syntax">FIRST_PLACEMENT</span></span>. There are three possible placings: see <a href="2-rb.html#SP1" class="internal">booking</a>
|
||||||
|
for what they are.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary">And since there are four possible sides, the following function effectively has
|
||||||
|
12 different modes to get right.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary">Each "addition" leaves the list either the same size or longer by 1.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">BEFORE_SIDE</span><span class="plain-syntax"> -1 </span><span class="comment-syntax"> before the reference rule</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">IN_SIDE</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax"> </span><span class="comment-syntax"> if no mention is made of where to put the new booking</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">AFTER_SIDE</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="comment-syntax"> after the reference rule</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">INSTEAD_SIDE</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="comment-syntax"> in place of the reference rule</span>
|
||||||
|
</pre>
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BookingLists::add</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">BookingLists::add</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_br</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">placing</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">side</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Make some sanity checks on the addition instructions</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Handle the case where the new rule is already in the list</span><span class="named-paragraph-number">5.2</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_3" class="named-paragraph-link"><span class="named-paragraph">Handle all placements made with the INSTEAD side</span><span class="named-paragraph-number">5.3</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Handle all placements made with the FIRST placement</span><span class="named-paragraph-number">5.4</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_5" class="named-paragraph-link"><span class="named-paragraph">Handle all placements made with the LAST placement</span><span class="named-paragraph-number">5.5</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_6" class="named-paragraph-link"><span class="named-paragraph">Handle what's left: MIDDLE placements on the IN, BEFORE or AFTER sides</span><span class="named-paragraph-number">5.6</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>§5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make some sanity checks on the addition instructions</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">side</span><span class="plain-syntax"> != </span><span class="constant-syntax">IN_SIDE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ref_rule</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to add before or after or instead of non-rule"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">side</span><span class="plain-syntax"> == </span><span class="constant-syntax">IN_SIDE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ref_rule</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to add in middle but with ref rule"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">side</span><span class="plain-syntax"> != </span><span class="constant-syntax">IN_SIDE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">placing</span><span class="plain-syntax"> != </span><span class="constant-syntax">MIDDLE_PLACEMENT</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to add before or after but with non-middle placement"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to add rule to null list"</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">placing</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">MIDDLE_PLACEMENT:</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">FIRST_PLACEMENT:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Placed first\n"</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">LAST_PLACEMENT:</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Placed last\n"</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">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"invalid placing of rule"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5">§5</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_2" class="paragraph-anchor"></a><b>§5.2. </b>If R is already in B, the assertion may still have an effect.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary">If our instructions specify no particular position for R to take, we return
|
||||||
|
because nothing need be done: the rule's there already, so be happy. Otherwise,
|
||||||
|
we remove R's existing booking in order that it can be rebooked in a new position.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary">This is a change in semantics from the original Inform 7 design for rulebooks,
|
||||||
|
under which a rule could be booked multiple times in the same rulebook — which
|
||||||
|
was then called "duplication". Following debate on the Usenet newsgroup
|
||||||
|
<span class="extract"><span class="extract-syntax">rec.arts.int-fiction</span></span> in February and March 2009, it was decided to abolish
|
||||||
|
duplication in favour of the clean principle that a rule can only be in a
|
||||||
|
single rulebook once. This makes it easier to place rules with tricky preambles,
|
||||||
|
though there were arguments on both sides.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle the case where the new rule is already in the list</span><span class="named-paragraph-number">5.2</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::eq</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">), </span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">new_br</span><span class="plain-syntax">))) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">side</span><span class="plain-syntax"> == </span><span class="constant-syntax">IN_SIDE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">placing</span><span class="plain-syntax"> == </span><span class="constant-syntax">MIDDLE_PLACEMENT</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">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Removing previous entry from rulebook\n"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">; </span><span class="comment-syntax"> rule can only appear once, so no need to keep checking</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5">§5</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_3" class="paragraph-anchor"></a><b>§5.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle all placements made with the INSTEAD side</span><span class="named-paragraph-number">5.3</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">side</span><span class="plain-syntax"> == </span><span class="constant-syntax">INSTEAD_SIDE</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::eq</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">), </span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">)) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax">; </span><span class="comment-syntax"> replace with same placement</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_br</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="plain-syntax"> }</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5">§5</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_4" class="paragraph-anchor"></a><b>§5.4. </b>If we insert a rule as first-placed rule when there already is a first-placed
|
||||||
|
rule, the new one displaces it to go first, but both continue to be labelled as
|
||||||
|
having <span class="extract"><span class="extract-syntax">FIRST_PLACEMENT</span></span>, so that subsequent rule insertions of middle-placed rules
|
||||||
|
will still go after both of them.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle all placements made with the FIRST placement</span><span class="named-paragraph-number">5.4</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">placing</span><span class="plain-syntax"> == </span><span class="constant-syntax">FIRST_PLACEMENT</span><span class="plain-syntax">) { </span><span class="comment-syntax"> first in valid interval (must be whole list)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">previously_first</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">list_head</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">list_head</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">previously_first</span><span class="plain-syntax">; </span><span class="comment-syntax"> pushes any existing first rule forward</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> = </span><span class="identifier-syntax">placing</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>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5">§5</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_5" class="paragraph-anchor"></a><b>§5.5. </b>Symmetrically, a second last-placed rule is inserted after any existing one, but
|
||||||
|
both are labelled as having <span class="extract"><span class="extract-syntax">LAST_PLACEMENT</span></span>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle all placements made with the LAST placement</span><span class="named-paragraph-number">5.5</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">placing</span><span class="plain-syntax"> == </span><span class="constant-syntax">LAST_PLACEMENT</span><span class="plain-syntax">) { </span><span class="comment-syntax"> last in valid interval (must be whole list)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">list_head</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">; </span><span class="comment-syntax"> pushes any existing last rule backward</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> = </span><span class="identifier-syntax">placing</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>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5">§5</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_6" class="paragraph-anchor"></a><b>§5.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle what's left: MIDDLE placements on the IN, BEFORE or AFTER sides</span><span class="named-paragraph-number">5.6</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">start_rule</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">list_head</span><span class="plain-syntax">; </span><span class="comment-syntax"> valid interval begins after this rule</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">end_rule</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> valid interval ends before this rule, or runs to end if </span><span class="extract"><span class="extract-syntax">NULL</span></span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_6_1" class="named-paragraph-link"><span class="named-paragraph">Adjust the valid interval to take care of BEFORE and AFTER side requirements</span><span class="named-paragraph-number">5.6.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_6_2" class="named-paragraph-link"><span class="named-paragraph">Check that the valid interval is indeed as advertised</span><span class="named-paragraph-number">5.6.2</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">insert_after</span><span class="plain-syntax"> = </span><span class="identifier-syntax">start_rule</span><span class="plain-syntax">; </span><span class="comment-syntax"> insertion point is after this</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_6_3" class="named-paragraph-link"><span class="named-paragraph">Find insertion point, keeping the valid interval in specificity order</span><span class="named-paragraph-number">5.6.3</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subseq</span><span class="plain-syntax"> = </span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">subseq</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bl.html#SP5_6_4" class="named-paragraph-link"><span class="named-paragraph">Set the placement for the new rule booking</span><span class="named-paragraph-number">5.6.4</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5">§5</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_6_1" class="paragraph-anchor"></a><b>§5.6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Adjust the valid interval to take care of BEFORE and AFTER side requirements</span><span class="named-paragraph-number">5.6.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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">side</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">BEFORE_SIDE:</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::eq</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">), </span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">end_rule</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">; </span><span class="comment-syntax"> insert before: so valid interval ends here</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">end_rule</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">"can't find end rule"</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">AFTER_SIDE:</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::eq</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">), </span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">start_rule</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">; </span><span class="comment-syntax"> insert after: so valid interval begins here</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">start_rule</span><span class="plain-syntax"> == </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">list_head</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"can't find start rule"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5_6">§5.6</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_6_2" class="paragraph-anchor"></a><b>§5.6.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Check that the valid interval is indeed as advertised</span><span class="named-paragraph-number">5.6.2</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">end_rule</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pos</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">list_head</span><span class="plain-syntax">; </span><span class="identifier-syntax">pos</span><span class="plain-syntax">; </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> == </span><span class="identifier-syntax">start_rule</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> == </span><span class="identifier-syntax">end_rule</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)) </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</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">i</span><span class="plain-syntax"> != </span><span class="identifier-syntax">t</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"valid rule interval isn't"</span><span class="plain-syntax">);</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5_6">§5.6</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_6_3" class="paragraph-anchor"></a><b>§5.6.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find insertion point, keeping the valid interval in specificity order</span><span class="named-paragraph-number">5.6.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">log</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</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="identifier-syntax">SPECIFICITIES_DA</span><span class="plain-syntax">)) </span><span class="identifier-syntax">log</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="comment-syntax"> move forward to final valid first rule (if any exist)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> != </span><span class="identifier-syntax">end_rule</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> && (</span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> == </span><span class="constant-syntax">FIRST_PLACEMENT</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">insert_after</span><span class="plain-syntax"> = </span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="comment-syntax"> move forward past other middle rules if they are not less specific</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> != </span><span class="identifier-syntax">end_rule</span><span class="plain-syntax">) </span><span class="comment-syntax"> stop before </span>\(p\)<span class="comment-syntax"> leaves valid range</span>
|
||||||
|
<span class="plain-syntax"> && (</span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> != </span><span class="constant-syntax">LAST_PLACEMENT</span><span class="plain-syntax">) </span><span class="comment-syntax"> or reaches a last rule</span>
|
||||||
|
<span class="plain-syntax"> && (</span><a href="2-rb.html#SP7" class="function-link"><span class="function-syntax">RuleBookings::cmp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">log</span><span class="plain-syntax">) >= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="comment-syntax"> or a rule less specific than the new one</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">insert_after</span><span class="plain-syntax"> = </span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">;</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5_6">§5.6</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5_6_4" class="paragraph-anchor"></a><b>§5.6.4. </b>Since this part of the algorithm is used only when we've requested MIDDLE
|
||||||
|
placement, it might seem that <span class="extract"><span class="extract-syntax">new_br->placement</span></span> should always be set to
|
||||||
|
that. This does indeed mostly happen, but not always. To preserve rulebook
|
||||||
|
invariants (b) and (c), we need to force anything added after a LAST rule
|
||||||
|
to be LAST as well, and similarly for FIRSTs. (This will only happen in
|
||||||
|
cases where the source text called for placements AFTER a LAST rule, or
|
||||||
|
BEFORE a FIRST one.)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set the placement for the new rule booking</span><span class="named-paragraph-number">5.6.4</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> = </span><span class="constant-syntax">MIDDLE_PLACEMENT</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">insert_after</span><span class="plain-syntax"> != </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">list_head</span><span class="plain-syntax">) &&</span>
|
||||||
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">insert_after</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> == </span><span class="constant-syntax">LAST_PLACEMENT</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> =</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="constant-syntax">LAST_PLACEMENT</span><span class="plain-syntax">; </span><span class="comment-syntax"> happens if valid interval is after a last rule</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">subseq</span><span class="plain-syntax">) &&</span>
|
||||||
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">subseq</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> == </span><span class="constant-syntax">FIRST_PLACEMENT</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">new_br</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> =</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="constant-syntax">FIRST_PLACEMENT</span><span class="plain-syntax">; </span><span class="comment-syntax"> happens if valid interval is before a first rule</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="2-bl.html#SP5_6">§5.6</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Removal. </b>This is much simpler, since it doesn't disturb the ordering:
|
||||||
|
</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">BookingLists::remove</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">BookingLists::remove</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS_WITH_PREV</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">pr</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::eq</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">), </span><span class="identifier-syntax">R</span><span class="plain-syntax">)) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">pr</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax"> = </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</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>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Scanning lists for their contents. </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">BookingLists::length</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">BookingLists::length</span></span>:<br/><a href="2-bl.html#SP3">§3</a>, <a href="2-bl.html#SP8">§8</a><br/>Rulebooks - <a href="2-rlb.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">) </span><span class="identifier-syntax">n</span><span class="plain-syntax">++;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BookingLists::is_contextually_empty</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">BookingLists::is_contextually_empty</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP11">§11</a>, <a href="2-rlb.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><a href="2-rls.html#SP9" class="function-link"><span class="function-syntax">Rules::get_defn_as_phrase</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::phrase_fits_rule_context</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="function-syntax">BookingLists::first</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">BookingLists::first</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BookingLists::is_empty_of_i7_rules</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">BookingLists::is_empty_of_i7_rules</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rls.html#SP9" class="function-link"><span class="function-syntax">Rules::get_defn_as_phrase</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">)))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BookingLists::contains</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">BookingLists::contains</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_find</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::eq</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">), </span><span class="identifier-syntax">to_find</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BookingLists::contains_ph</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">BookingLists::contains_ph</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP21">§21</a><br/>Focus and Outcome - <a href="2-fao.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph_to_find</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rls.html#SP9" class="function-link"><span class="function-syntax">Rules::get_defn_as_phrase</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">ph_to_find</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Compilation of rule definitions for rulebook. </b>There's no real need to do so, but we compile rule definitions in rulebook
|
||||||
|
order to make the compiled code more legible, and for the same reason we add
|
||||||
|
plenty of commentary.
|
||||||
|
</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">BookingLists::compile</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">BookingLists::compile</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_i</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><a href="2-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::length</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax">++;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::compile_comment</span><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">), </span><span class="identifier-syntax">s</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">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">br</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> != </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">-></span><span class="element-syntax">placement</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">C</span><span class="plain-syntax">, </span><span class="string-syntax">"--- now the "</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">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_booking</span><span class="plain-syntax">-></span><span class="element-syntax">placement</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">FIRST_PLACEMENT:</span><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">"first-placed rules"</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">MIDDLE_PLACEMENT:</span><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">"mid-placed rules"</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">LAST_PLACEMENT:</span><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">"last-placed rules"</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="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">" ---"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</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">else</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-rb.html#SP8" class="function-link"><span class="function-syntax">RuleBookings::comment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">br</span><span 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::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">Produce::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="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="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">t</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">CompiledText::divider_comment</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="2-rb.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresscurrent">bl</li><li class="progresssection"><a href="2-rlb.html">rlb</a></li><li class="progresssection"><a href="2-fao.html">fao</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="2-rlb.html">❯</a></li></ul></div>
|
||||||
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -425,7 +425,7 @@ can be used in a void context as a sort of return-from-rule phrase.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook_outcome</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ro</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook_outcome</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ro</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">outs</span><span class="plain-syntax">-></span><span class="element-syntax">named_outcomes</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ro</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">outs</span><span class="plain-syntax">-></span><span class="element-syntax">named_outcomes</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ro</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ro</span><span class="plain-syntax">-></span><span class="element-syntax">outcome_name</span><span class="plain-syntax"> == </span><span class="identifier-syntax">rbno</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ro</span><span class="plain-syntax">-></span><span class="element-syntax">outcome_name</span><span class="plain-syntax"> == </span><span class="identifier-syntax">rbno</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-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_contains_ph</span></a><span class="plain-syntax">(</span><a href="2-rlb.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::first_booking</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">), </span><span class="identifier-syntax">ph</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-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::contains_ph</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">))</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ro</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ro</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
@ -440,7 +440,7 @@ can be used in a void context as a sort of return-from-rule phrase.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</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">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">outcomes</span><span class="plain-syntax"> *</span><span class="identifier-syntax">outs</span><span class="plain-syntax"> = </span><a href="2-rlb.html#SP9" class="function-link"><span class="function-syntax">Rulebooks::get_outcomes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">outcomes</span><span class="plain-syntax"> *</span><span class="identifier-syntax">outs</span><span class="plain-syntax"> = </span><a href="2-rlb.html#SP9" class="function-link"><span class="function-syntax">Rulebooks::get_outcomes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</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-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_contains_ph</span></a><span class="plain-syntax">(</span><a href="2-rlb.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::first_booking</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">), </span><span class="identifier-syntax">ph</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-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::contains_ph</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</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">okay</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">okay</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">rulebook_outcome</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ro</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook_outcome</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ro</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">outs</span><span class="plain-syntax">-></span><span class="element-syntax">named_outcomes</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ro</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">outs</span><span class="plain-syntax">-></span><span class="element-syntax">named_outcomes</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ro</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
||||||
|
@ -626,7 +626,7 @@ can be used in a void context as a sort of return-from-rule phrase.
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="2-rlb.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresssection"><a href="2-rlb.html">rlb</a></li><li class="progresscurrent">fao</li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="2-sv.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="2-rlb.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresssection"><a href="2-bl.html">bl</a></li><li class="progresssection"><a href="2-rlb.html">rlb</a></li><li class="progresscurrent">fao</li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="2-sv.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -137,7 +137,7 @@ language such as Haskell.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">runs_during_activities</span><span class="plain-syntax">; </span><span class="comment-syntax"> allow "while..." clauses to name these</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">runs_during_activities</span><span class="plain-syntax">; </span><span class="comment-syntax"> allow "while..." clauses to name these</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">used_by_future_action_activity</span><span class="plain-syntax">; </span><span class="comment-syntax"> like "deciding the scope of something..."</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">used_by_future_action_activity</span><span class="plain-syntax">; </span><span class="comment-syntax"> like "deciding the scope of something..."</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rule_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> linked list of booked rules</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rule_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> linked list of booked rules</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">placement_affecting</span><span class="plain-syntax"> *</span><span class="identifier-syntax">placement_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> linked list of explicit placements</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">placement_affecting</span><span class="plain-syntax"> *</span><span class="identifier-syntax">placement_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> linked list of explicit placements</span>
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ language such as Haskell.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure rulebook is accessed in 2/rls, 6/cp and here.</li></ul>
|
<ul class="endnotetexts"><li>The structure rulebook is accessed in 2/rls, 2/fao, 6/cp and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The following is used only to store the result of parsing text as a
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The following is used only to store the result of parsing text as a
|
||||||
rulebook name:
|
rulebook name:
|
||||||
</p>
|
</p>
|
||||||
|
@ -321,7 +321,7 @@ built (for instance, scene endings).
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">RUN_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_package</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">RUN_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_package</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax"> = </span><a href="2-rb.html#SP11" class="function-link"><span class="function-syntax">Rules::Bookings::list_new</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax"> = </span><a href="2-bl.html#SP4" class="function-link"><span class="function-syntax">BookingLists::new</span></a><span class="plain-syntax">();</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">automatically_generated</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">rb</span><span class="plain-syntax">-></span><span class="element-syntax">automatically_generated</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">rb</span><span class="plain-syntax">-></span><span class="element-syntax">used_by_future_action_activity</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">rb</span><span class="plain-syntax">-></span><span class="element-syntax">used_by_future_action_activity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -408,7 +408,7 @@ built (for instance, scene endings).
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">fragmentation_stem_length</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wn</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">fragmentation_stem_length</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wn</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::requires_specific_action</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">Rulebooks::requires_specific_action</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::requires_specific_action</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">CHECK_RB</span><span class="plain-syntax">]) </span><span class="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">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">CHECK_RB</span><span class="plain-syntax">]) </span><span class="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">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">CARRY_OUT_RB</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">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">CARRY_OUT_RB</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">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">REPORT_RB</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">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">REPORT_RB</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>
|
||||||
|
@ -434,7 +434,7 @@ built (for instance, scene endings).
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</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">Rulebooks::rb_index_placements</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">Rulebooks::rb_index_placements</span></span>:<br/><a href="2-rlb.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::rb_index_placements</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">Rulebooks::rb_index_placements</span></span>:<br/><a href="2-rlb.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">placement_affecting</span><span class="plain-syntax"> *</span><span class="identifier-syntax">npl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">placement_list</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">placement_affecting</span><span class="plain-syntax"> *</span><span class="identifier-syntax">npl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">placement_list</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">npl</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">npl</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
||||||
|
@ -451,39 +451,39 @@ built (for instance, scene endings).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::focus</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">Rulebooks::focus</span></span>:<br/><a href="2-rlb.html#SP18">§18</a>, <a href="2-rlb.html#SP19">§19</a><br/>Phrase Usage - <a href="3-pu.html#SP10_3_1_1">§10.3.1.1</a>, <a href="3-pu.html#SP20_1_1">§20.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::focus</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">Rulebooks::focus</span></span>:<br/><a href="2-rlb.html#SP18">§18</a>, <a href="2-rlb.html#SP19">§19</a><br/>Phrase Usage - <a href="3-pu.html#SP10_3_1_1">§10.3.1.1</a>, <a href="3-pu.html#SP20_1_1">§20.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-fao.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::get_focus</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_focus</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-fao.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::get_focus</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_focus</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="function-syntax">Rulebooks::get_parameter_kind</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">Rulebooks::get_parameter_kind</span></span>:<br/><a href="2-rlb.html#SP9">§9</a>, <a href="2-rlb.html#SP23_1">§23.1</a><br/>Phrase Usage - <a href="3-pu.html#SP20_1_1">§20.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::get_parameter_kind</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">Rulebooks::get_parameter_kind</span></span>:<br/><a href="2-rlb.html#SP9">§9</a>, <a href="2-rlb.html#SP23_1">§23.1</a><br/>Phrase Usage - <a href="3-pu.html#SP20_1_1">§20.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-fao.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::get_focus_parameter_kind</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_focus</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-fao.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::get_focus_parameter_kind</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_focus</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::used_by_future_actions</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">Rulebooks::used_by_future_actions</span></span>:<br/>Activities - <a href="2-act.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::used_by_future_actions</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">Rulebooks::used_by_future_actions</span></span>:<br/>Activities - <a href="2-act.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">used_by_future_action_activity</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">used_by_future_action_activity</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::is_empty</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">Rulebooks::is_empty</span></span>:<br/><a href="2-rlb.html#SP23">§23</a><br/>Activities - <a href="2-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::is_empty</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">Rulebooks::is_empty</span></span>:<br/><a href="2-rlb.html#SP23">§23</a><br/>Activities - <a href="2-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</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">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_is_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::is_contextually_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::no_rules</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">Rulebooks::no_rules</span></span>:<br/><a href="2-rlb.html#SP23">§23</a><br/>Activities - <a href="2-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::no_rules</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">Rulebooks::no_rules</span></span>:<br/><a href="2-rlb.html#SP23">§23</a><br/>Activities - <a href="2-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</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><a href="2-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::no_rules_in_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::length</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::rule_in_rulebook</span><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::rule_in_rulebook</span><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_contains</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::contains</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::first_booking</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">Rulebooks::first_booking</span></span>:<br/>Focus and Outcome - <a href="2-fao.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::first_booking</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::first</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::runs_during_activities</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">Rulebooks::runs_during_activities</span></span>:<br/>Phrase Usage - <a href="3-pu.html#SP10_3_1_1">§10.3.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::runs_during_activities</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">Rulebooks::runs_during_activities</span></span>:<br/>Phrase Usage - <a href="3-pu.html#SP10_3_1_1">§10.3.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">runs_during_activities</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">runs_during_activities</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
@ -596,11 +596,11 @@ built (for instance, scene endings).
|
||||||
<span class="plain-syntax"> </span><a href="2-sv.html#SP3" class="function-link"><span class="function-syntax">StackedVariables::add_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">owned_by_rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">), </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-sv.html#SP3" class="function-link"><span class="function-syntax">StackedVariables::add_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">owned_by_rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cnode</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">), </span><span class="identifier-syntax">K</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">Rulebooks::make_stvs_accessible</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::make_stvs_accessible</span></span>:<br/>Activities - <a href="2-act.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::make_stvs_accessible</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">Rulebooks::make_stvs_accessible</span></span>:<br/>Activities - <a href="2-act.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">stacked_variable_owner</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax"> = </span><a href="2-sv.html#SP3" class="function-link"><span class="function-syntax">StackedVariables::add_owner_to_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">stvo</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax"> = </span><a href="2-sv.html#SP3" class="function-link"><span class="function-syntax">StackedVariables::add_owner_to_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">stvo</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::get_stv_creator_iname</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">Rulebooks::get_stv_creator_iname</span></span>:<br/><a href="2-rlb.html#SP13_1">§13.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::get_stv_creator_iname</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">Rulebooks::get_stv_creator_iname</span></span>:<br/><a href="2-rlb.html#SP13_1">§13.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">stv_creator_iname</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">rb</span><span class="plain-syntax">-></span><span class="element-syntax">stv_creator_iname</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">rb</span><span class="plain-syntax">-></span><span class="element-syntax">stv_creator_iname</span><span class="plain-syntax"> =</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">stv_creator_iname</span><span class="plain-syntax"> =</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULEBOOK_STV_CREATOR_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_package</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_iname_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULEBOOK_STV_CREATOR_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_package</span><span class="plain-syntax">);</span>
|
||||||
|
@ -670,17 +670,17 @@ built (for instance, scene endings).
|
||||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Indexing and logging rulebooks. </b></p>
|
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Indexing and logging rulebooks. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::log_name_only</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">Rulebooks::log_name_only</span></span>:<br/>Phrase Usage - <a href="3-pu.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::log_name_only</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::log_name_only</span></span>:<br/>Phrase Usage - <a href="3-pu.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Rulebook %d (%W)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">primary_name</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">"Rulebook %d (%W)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">primary_name</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">Rulebooks::log</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::log</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::log_name_only</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::log_name_only</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">": "</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">": "</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP15" class="function-link"><span class="function-syntax">Rules::Bookings::list_log</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-bl.html#SP3" class="function-link"><span class="function-syntax">BookingLists::log</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::no_rule_context</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::no_rule_context</span></span>:<br/><a href="2-rlb.html#SP23">§23</a><br/>Activities - <a href="2-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::no_rule_context</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">Rulebooks::no_rule_context</span></span>:<br/><a href="2-rlb.html#SP23">§23</a><br/>Activities - <a href="2-act.html#SP7">§7</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">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">.</span><span class="element-syntax">action_context</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">rc</span><span class="plain-syntax">.</span><span class="element-syntax">action_context</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -692,7 +692,7 @@ built (for instance, scene endings).
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::phrase_fits_rule_context</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::phrase_fits_rule_context</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::phrase_fits_rule_context</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::phrase_fits_rule_context</span></span>:<br/>Booking Lists - <a href="2-bl.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rc</span><span class="plain-syntax">.</span><span class="identifier-syntax">scene_context</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">rc</span><span class="plain-syntax">.</span><span class="identifier-syntax">scene_context</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">ph</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</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>
|
||||||
|
@ -719,7 +719,7 @@ built (for instance, scene endings).
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::index</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::index</span></span>:<br/><a href="2-rlb.html#SP23">§23</a><br/>Activities - <a href="2-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">billing</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp_count</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::index</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::index</span></span>:<br/><a href="2-rlb.html#SP23">§23</a><br/>Activities - <a href="2-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">billing</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp_count</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">suppress_outcome</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">suppress_outcome</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">billing</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"No billing for rb index"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">billing</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"No billing for rb index"</span><span class="plain-syntax">);</span>
|
||||||
|
@ -727,9 +727,9 @@ built (for instance, scene endings).
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rc</span><span class="plain-syntax">.</span><span class="element-syntax">action_context</span><span class="plain-syntax">) </span><span class="identifier-syntax">suppress_outcome</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">rc</span><span class="plain-syntax">.</span><span class="element-syntax">action_context</span><span class="plain-syntax">) </span><span class="identifier-syntax">suppress_outcome</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_is_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">)) </span><span class="identifier-syntax">suppress_outcome</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="2-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::is_contextually_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">)) </span><span class="identifier-syntax">suppress_outcome</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><a href="2-rb.html#SP17" class="function-link"><span class="function-syntax">Rules::Bookings::list_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">, </span><span class="identifier-syntax">billing</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">resp_count</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IXRules::index_booking_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">, </span><span class="identifier-syntax">billing</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">resp_count</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-fao.html#SP9" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::index_outcomes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_outcomes</span><span class="plain-syntax">), </span><span class="identifier-syntax">suppress_outcome</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-fao.html#SP9" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::index_outcomes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_outcomes</span><span class="plain-syntax">), </span><span class="identifier-syntax">suppress_outcome</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rlb.html#SP10" class="function-link"><span class="function-syntax">Rulebooks::rb_index_placements</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rlb.html#SP10" class="function-link"><span class="function-syntax">Rulebooks::rb_index_placements</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">;</span>
|
||||||
|
@ -739,11 +739,11 @@ built (for instance, scene endings).
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::index_action_rules</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">,</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::index_action_rules</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp_count</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">code</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp_count</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="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">t</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP18" class="function-link"><span class="function-syntax">Rules::Bookings::list_suppress_indexed_links</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">IXRules::list_suppress_indexed_links</span><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">code</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">t</span><span class="plain-syntax"> += </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">code</span><span class="plain-syntax">], </span><span class="identifier-syntax">desc</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">code</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">t</span><span class="plain-syntax"> += </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="identifier-syntax">code</span><span class="plain-syntax">], </span><span class="identifier-syntax">desc</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::action_context</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">), </span><span class="identifier-syntax">resp_count</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::action_context</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">), </span><span class="identifier-syntax">resp_count</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) </span><span class="identifier-syntax">t</span><span class="plain-syntax"> += </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::no_rule_context</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">resp_count</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) </span><span class="identifier-syntax">t</span><span class="plain-syntax"> += </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><a href="2-rlb.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::no_rule_context</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">resp_count</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP18" class="function-link"><span class="function-syntax">Rules::Bookings::list_resume_indexed_links</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">IXRules::list_resume_indexed_links</span><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">t</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">t</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||||
|
@ -825,7 +825,7 @@ of the two outer words and is discontiguous.
|
||||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b></p>
|
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">rulebook_match</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::rb_match_from_description</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::rb_match_from_description</span></span>:<br/><a href="2-rlb.html#SP15">§15</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">rulebook_match</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::rb_match_from_description</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::rb_match_from_description</span></span>:<br/><a href="2-rlb.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">initial_w1</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">modifier_words</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">initial_w1</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">modifier_words</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">pl</span><span class="plain-syntax"> = </span><span class="constant-syntax">MIDDLE_PLACEMENT</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">pl</span><span class="plain-syntax"> = </span><span class="constant-syntax">MIDDLE_PLACEMENT</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
||||||
|
@ -908,13 +908,13 @@ sub-section on linked lists of booked rules in the section on Rules.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::attach_rule</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::attach_rule</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">,</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::attach_rule</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::attach_rule</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">the_new_rule</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">placing</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">side</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ref_rule</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">placing</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">side</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Attaching booked rule $b at sentence:\n $T"</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Attaching booked rule $b at sentence:\n $T"</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Rulebook before attachment: $K"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Rulebook before attachment: $K"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</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-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">) == </span><span class="identifier-syntax">ref_rule</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-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">) == </span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">side</span><span class="plain-syntax"> != </span><span class="constant-syntax">INSTEAD_SIDE</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">side</span><span class="plain-syntax"> != </span><span class="constant-syntax">INSTEAD_SIDE</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BeforeOrAfterSelf</span><span class="plain-syntax">),</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BeforeOrAfterSelf</span><span class="plain-syntax">),</span>
|
||||||
<span class="plain-syntax"> </span><span class="string-syntax">"a rule can't be before or after itself"</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="string-syntax">"a rule can't be before or after itself"</span><span class="plain-syntax">,</span>
|
||||||
|
@ -926,7 +926,7 @@ sub-section on linked lists of booked rules in the section on Rules.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">BEFORE_RB</span><span class="plain-syntax">]) ||</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">BEFORE_RB</span><span class="plain-syntax">]) ||</span>
|
||||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">AFTER_RB</span><span class="plain-syntax">]) ||</span>
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">AFTER_RB</span><span class="plain-syntax">]) ||</span>
|
||||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">INSTEAD_RB</span><span class="plain-syntax">])) {</span>
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">INSTEAD_RB</span><span class="plain-syntax">])) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><a href="2-rls.html#SP9" class="function-link"><span class="function-syntax">Rules::get_defn_as_phrase</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><a href="2-rls.html#SP9" class="function-link"><span class="function-syntax">Rules::get_defn_as_phrase</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="3-prcd.html#SP4" class="function-link"><span class="function-syntax">Phrases::Context::required_action</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="3-prcd.html#SP4" class="function-link"><span class="function-syntax">Phrases::Context::required_action</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span 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">ActionSemantics::is_out_of_world</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)))</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">an</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ActionSemantics::is_out_of_world</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)))</span>
|
||||||
|
@ -940,16 +940,16 @@ sub-section on linked lists of booked rules in the section on Rules.
|
||||||
|
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">SETTING_ACTION_VARIABLES_RB</span><span class="plain-syntax">]) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">SETTING_ACTION_VARIABLES_RB</span><span class="plain-syntax">]) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rls.html#SP18" class="function-link"><span class="function-syntax">Rules::set_never_test_actor</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-rls.html#SP18" class="function-link"><span class="function-syntax">Rules::set_never_test_actor</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-fao.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::modify_rule_to_suit_focus</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_focus</span><span class="plain-syntax">),</span>
|
<span class="plain-syntax"> </span><a href="2-fao.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::modify_rule_to_suit_focus</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_focus</span><span class="plain-syntax">),</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</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">side</span><span class="plain-syntax"> == </span><span class="constant-syntax">INSTEAD_SIDE</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">side</span><span class="plain-syntax"> == </span><span class="constant-syntax">INSTEAD_SIDE</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="string-syntax">"Copying actor test flags from rule being replaced\n"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="string-syntax">"Copying actor test flags from rule being replaced\n"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rls.html#SP18" class="function-link"><span class="function-syntax">Rules::copy_actor_test_flags</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">), </span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rls.html#SP18" class="function-link"><span class="function-syntax">Rules::copy_actor_test_flags</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">), </span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="string-syntax">"Copying former rulebook's variable permissions to displaced rule\n"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="string-syntax">"Copying former rulebook's variable permissions to displaced rule\n"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rls.html#SP10" class="function-link"><span class="function-syntax">Rules::put_variables_in_scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rls.html#SP10" class="function-link"><span class="function-syntax">Rules::put_variables_in_scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax">);</span>
|
||||||
|
@ -958,20 +958,20 @@ sub-section on linked lists of booked rules in the section on Rules.
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><a href="2-rls.html#SP10" class="function-link"><span class="function-syntax">Rules::put_variables_in_scope</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">), </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rls.html#SP10" class="function-link"><span class="function-syntax">Rules::put_variables_in_scope</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">), </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rlb.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::focus</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) == </span><span class="constant-syntax">ACTION_FOCUS</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rlb.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::focus</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) == </span><span class="constant-syntax">ACTION_FOCUS</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rls.html#SP10" class="function-link"><span class="function-syntax">Rules::put_action_variables_in_scope</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-rls.html#SP10" class="function-link"><span class="function-syntax">Rules::put_action_variables_in_scope</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">fragmentation_stem_length</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">fragmentation_stem_length</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rls.html#SP18" class="function-link"><span class="function-syntax">Rules::suppress_action_testing</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-rls.html#SP18" class="function-link"><span class="function-syntax">Rules::suppress_action_testing</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><a href="3-prcd.html#SP8" class="function-link"><span class="function-syntax">Phrases::Context::ensure_avl</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="3-prcd.html#SP8" class="function-link"><span class="function-syntax">Phrases::Context::ensure_avl</span></a><span class="plain-syntax">(</span><a href="2-rb.html#SP4" class="function-link"><span class="function-syntax">RuleBookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP13" class="function-link"><span class="function-syntax">Rules::Bookings::list_add</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">placing</span><span class="plain-syntax">, </span><span class="identifier-syntax">side</span><span class="plain-syntax">, </span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-bl.html#SP5" class="function-link"><span class="function-syntax">BookingLists::add</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">placing</span><span class="plain-syntax">, </span><span class="identifier-syntax">side</span><span class="plain-syntax">, </span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Rulebook after attachment: $K"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_ATTACHMENTS</span><span class="plain-syntax">, </span><span class="string-syntax">"Rulebook after attachment: $K"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</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">Rulebooks::detach_rule</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::detach_rule</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP14" class="function-link"><span class="function-syntax">Rules::Bookings::list_remove</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-bl.html#SP6" class="function-link"><span class="function-syntax">BookingLists::remove</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Compilation. </b>We do not actually compile the I6 routines for a rulebook here, but simply
|
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Compilation. </b>We do not actually compile the I6 routines for a rulebook here, but simply
|
||||||
|
@ -980,14 +980,14 @@ code are the real outcome of the code in this section.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::compile_rule_phrases</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::compile_rule_phrases</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_2">§11.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_i</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::compile_rule_phrases</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::compile_rule_phrases</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_2">§11.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_i</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP20" class="function-link"><span class="function-syntax">Rules::Bookings::list_judge_ordering</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rb.html#SP8" class="function-link"><span class="function-syntax">RuleBookings::list_judge_ordering</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_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="2-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_is_empty_of_i7_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::is_empty_of_i7_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP21" class="function-link"><span class="function-syntax">Rules::Bookings::list_compile_rule_phrases</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">max_i</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-bl.html#SP8" class="function-link"><span class="function-syntax">BookingLists::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">max_i</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">Rulebooks::rulebooks_array_array</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::rulebooks_array_array</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::rulebooks_array_array</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::rulebooks_array_array</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP13">§13</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULEBOOKS_ARRAY_HL</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULEBOOKS_ARRAY_HL</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
||||||
|
@ -998,8 +998,8 @@ code are the real outcome of the code in this section.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</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">Rulebooks::compile_rulebooks</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::compile_rulebooks</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::compile_rulebooks</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::compile_rulebooks</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP13">§13</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="2-rb.html#SP22" class="function-link"><span class="function-syntax">Rules::Bookings::start_list_compilation</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::start_list_compilation</span><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</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">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</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">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</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">act</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">act</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1009,14 +1009,14 @@ code are the real outcome of the code in this section.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rlb.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::focus</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) == </span><span class="constant-syntax">PARAMETER_FOCUS</span><span class="plain-syntax">) </span><span class="identifier-syntax">par</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="2-rlb.html#SP11" class="function-link"><span class="function-syntax">Rulebooks::focus</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) == </span><span class="constant-syntax">PARAMETER_FOCUS</span><span class="plain-syntax">) </span><span class="identifier-syntax">par</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">RULEBOOK_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling rulebook: %W = %n\n"</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">RULEBOOK_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling rulebook: %W = %n\n"</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">primary_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">primary_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_iname</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP23" class="function-link"><span class="function-syntax">Rules::Bookings::list_compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">act</span><span class="plain-syntax">, </span><span class="identifier-syntax">par</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::list_compile</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rb_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">act</span><span class="plain-syntax">, </span><span class="identifier-syntax">par</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">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</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">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</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">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rls.html#SP16" class="function-link"><span class="function-syntax">Rules::check_constraints_are_typesafe</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rls.html#SP16" class="function-link"><span class="function-syntax">Rules::check_constraints_are_typesafe</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</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">Rulebooks::RulebookNames_array</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::RulebookNames_array</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::RulebookNames_array</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::RulebookNames_array</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP13">§13</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULEBOOKNAMES_HL</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULEBOOKNAMES_HL</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">memory_economy_in_force</span><span 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_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">memory_economy_in_force</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -1075,12 +1075,12 @@ parses the object noun phrase with the following:
|
||||||
<span class="plain-syntax"> </span><span class="function-syntax"><rulebook-property></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="function-syntax"><rulebook-property></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::kind_from_context</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::kind_from_context</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP3_1_1_4_7_1">§3.1.1.4.7.1</a>, <a href="6-cii.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Rulebooks::kind_from_context</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::kind_from_context</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP3_1_1_4_7_1">§3.1.1.4.7.1</a>, <a href="6-cii.html#SP7">§7</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">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">phrase_being_compiled</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">phrase_being_compiled</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</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">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</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-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_contains_ph</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</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-bl.html#SP7" class="function-link"><span class="function-syntax">BookingLists::contains_ph</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">rule_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">))</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-fao.html#SP4" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::get_outcome_kind</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_outcomes</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-fao.html#SP4" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::get_outcome_kind</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="element-syntax">my_outcomes</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -1326,7 +1326,7 @@ popular rulebooks, showing their contents in logical order.
|
||||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b></p>
|
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::noteworthy_rulebooks</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::noteworthy_rulebooks</span></span>:<br/><a href="2-rlb.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::noteworthy_rulebooks</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::noteworthy_rulebooks</span></span>:<br/><a href="2-rlb.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">nb</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">nb</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">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1351,7 +1351,7 @@ popular rulebooks, showing their contents in logical order.
|
||||||
<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">unique_xtra_no</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">unique_xtra_no</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">Rulebooks::index_rules_box</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::index_rules_box</span></span>:<br/><a href="2-rlb.html#SP22_1">§22.1</a>, <a href="2-rlb.html#SP22_2">§22.2</a>, <a href="2-rlb.html#SP22_3">§22.3</a>, <a href="2-rlb.html#SP22_4">§22.4</a>, <a href="2-rlb.html#SP22_5">§22.5</a>, <a href="2-rlb.html#SP22_7">§22.7</a>, <a href="2-rlb.html#SP22_10_1">§22.10.1</a><br/>Activities - <a href="2-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</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="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">doc_link</span><span class="plain-syntax">,</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::index_rules_box</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::index_rules_box</span></span>:<br/><a href="2-rlb.html#SP22_1">§22.1</a>, <a href="2-rlb.html#SP22_2">§22.2</a>, <a href="2-rlb.html#SP22_3">§22.3</a>, <a href="2-rlb.html#SP22_4">§22.4</a>, <a href="2-rlb.html#SP22_5">§22.5</a>, <a href="2-rlb.html#SP22_7">§22.7</a>, <a href="2-rlb.html#SP22_10_1">§22.10.1</a><br/>Activities - <a href="2-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</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="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">doc_link</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hide_behind_plus</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">activity</span><span class="plain-syntax"> *</span><span class="identifier-syntax">av</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hide_behind_plus</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">xtra_no</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">xtra_no</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) </span><span class="identifier-syntax">xtra_no</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) </span><span class="identifier-syntax">xtra_no</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1483,7 +1483,7 @@ optionally be used.)
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="2-rb.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresscurrent">rlb</li><li class="progresssection"><a href="2-fao.html">fao</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="2-fao.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="2-bl.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresssection"><a href="2-bl.html">bl</a></li><li class="progresscurrent">rlb</li><li class="progresssection"><a href="2-fao.html">fao</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="2-fao.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -266,7 +266,7 @@ does not lead to an inconsistency.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::set_kind_from</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">Rules::set_kind_from</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">RB</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::set_kind_from</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">Rules::set_kind_from</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">RB</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="2-rlb.html#SP9" class="function-link"><span class="function-syntax">Rulebooks::contains_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RB</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="2-rlb.html#SP9" class="function-link"><span class="function-syntax">Rulebooks::contains_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RB</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">kind_of_rule</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">kind_of_rule</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">kind_of_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) != </span><span class="identifier-syntax">ALWAYS_MATCH</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">kind_of_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) != </span><span class="identifier-syntax">ALWAYS_MATCH</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -322,7 +322,7 @@ of a <a href="3-phr.html#SP3" class="internal">phrase</a> as follows:
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="function-syntax">Rules::get_defn_as_phrase</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">Rules::get_defn_as_phrase</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP7">§7</a>, <a href="2-rb.html#SP16">§16</a>, <a href="2-rb.html#SP17">§17</a>, <a href="2-rb.html#SP24">§24</a><br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a><br/>Phrase Usage - <a href="3-pu.html#SP5_2">§5.2</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_1_1_4_12">§3.1.1.4.12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="function-syntax">Rules::get_defn_as_phrase</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">Rules::get_defn_as_phrase</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP6">§6</a><br/>Booking Lists - <a href="2-bl.html#SP7">§7</a><br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a><br/>Phrase Usage - <a href="3-pu.html#SP5_2">§5.2</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_1_1_4_12">§3.1.1.4.12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -372,7 +372,7 @@ is wording which should contain just the double-quoted function name.
|
||||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Logging. </b></p>
|
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Logging. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::log</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">Rules::log</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::log</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">Rules::log</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-rule>"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-rule>"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">name</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">R</span><span class="plain-syntax">-></span><span class="element-syntax">name</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">"["</span><span 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">R</span><span class="plain-syntax">-></span><span class="element-syntax">name</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">R</span><span class="plain-syntax">-></span><span class="element-syntax">name</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">"["</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">)</span>
|
||||||
|
@ -395,7 +395,7 @@ at run-time if this should happen:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::eq</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">Rules::eq</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP13_2">§13.2</a>, <a href="2-rb.html#SP13_3">§13.3</a>, <a href="2-rb.html#SP13_6_1">§13.6.1</a>, <a href="2-rb.html#SP14">§14</a>, <a href="2-rb.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R1</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R2</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::eq</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">Rules::eq</span></span>:<br/>Booking Lists - <a href="2-bl.html#SP5_2">§5.2</a>, <a href="2-bl.html#SP5_3">§5.3</a>, <a href="2-bl.html#SP5_6_1">§5.6.1</a>, <a href="2-bl.html#SP6">§6</a>, <a href="2-bl.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R1</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R2</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-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::defined</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R1</span><span class="plain-syntax">)) || (</span><a href="2-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::defined</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R2</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-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::defined</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R1</span><span class="plain-syntax">)) || (</span><a href="2-rls.html#SP13" class="function-link"><span class="function-syntax">Rules::defined</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R2</span><span class="plain-syntax">))) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R2</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax"> != </span><span class="identifier-syntax">R1</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R2</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax"> != </span><span class="identifier-syntax">R1</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::ne</span><span class="plain-syntax">(</span><span class="identifier-syntax">R1</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_Inter_function</span><span class="plain-syntax">, </span><span class="identifier-syntax">R2</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_Inter_function</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::ne</span><span class="plain-syntax">(</span><span class="identifier-syntax">R1</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_Inter_function</span><span class="plain-syntax">, </span><span class="identifier-syntax">R2</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_Inter_function</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>
|
||||||
|
@ -417,7 +417,7 @@ than <span class="extract"><span class="extract-syntax">R1</span></span>, or 0 i
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::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">Rules::compare_specificity</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R1</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">log_this</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::cmp</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">Rules::cmp</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R1</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">log_this</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R1</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">, *</span><span class="identifier-syntax">ph2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R2</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R1</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">, *</span><span class="identifier-syntax">ph2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R2</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">phrcd2</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">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">phrcd2</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">ph1</span><span class="plain-syntax">) </span><span class="identifier-syntax">phrcd1</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph1</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph1</span><span class="plain-syntax">) </span><span class="identifier-syntax">phrcd1</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph1</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
||||||
|
@ -542,8 +542,8 @@ of another.
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::request_automatic_placement</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">Rules::request_automatic_placement</span></span>:<br/>Phrases - <a href="3-phr.html#SP5_7">§5.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::request_automatic_placement</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">Rules::request_automatic_placement</span></span>:<br/>Phrases - <a href="3-phr.html#SP5_7">§5.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">automatic_booking</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">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">automatic_booking</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">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">automatic_booking</span><span class="plain-syntax"> = </span><a href="2-rb.html#SP3" class="function-link"><span class="function-syntax">Rules::Bookings::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">automatic_booking</span><span class="plain-syntax"> = </span><a href="2-rb.html#SP3" class="function-link"><span class="function-syntax">RuleBookings::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::request_automatic_placement</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">automatic_booking</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-rb.html#SP5" class="function-link"><span class="function-syntax">RuleBookings::request_automatic_placement</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">automatic_booking</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. Actor testing. </b>With some rules (those which have I7 definitions and which are action based),
|
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. Actor testing. </b>With some rules (those which have I7 definitions and which are action based),
|
||||||
|
@ -565,21 +565,21 @@ it's possible to change the way that applicability testing is done.
|
||||||
<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">Rules::set_marked_for_anyone</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Rules::set_marked_for_anyone</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::set_marked_for_anyone</span><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-prcd.html#SP3" class="function-link"><span class="function-syntax">Phrases::Context::set_marked_for_anyone</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="3-prcd.html#SP3" class="function-link"><span class="function-syntax">Phrases::Context::set_marked_for_anyone</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::suppress_action_testing</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Rules::suppress_action_testing</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::suppress_action_testing</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Rules::suppress_action_testing</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-prcd.html#SP4" class="function-link"><span class="function-syntax">Phrases::Context::suppress_action_testing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="3-prcd.html#SP4" class="function-link"><span class="function-syntax">Phrases::Context::suppress_action_testing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::copy_actor_test_flags</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Rules::copy_actor_test_flags</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_to</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_from</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::copy_actor_test_flags</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Rules::copy_actor_test_flags</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_to</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_from</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">R_from</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">R_to</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">"improper catf"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">R_from</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">R_to</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">"improper catf"</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd_from</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">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd_from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -618,7 +618,7 @@ possibility we store one of these:
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">content</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">content</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">rule_response</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">rule_response</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">rule_response</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::new_rule_response</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Rules::new_rule_response</span></span>:<br/><a href="2-rls.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">rule_response</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::new_rule_response</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Rules::new_rule_response</span></span>:<br/><a href="2-rls.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rule_response</span><span class="plain-syntax"> </span><span class="identifier-syntax">rr</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">rule_response</span><span class="plain-syntax"> </span><span class="identifier-syntax">rr</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rr</span><span class="plain-syntax">.</span><span class="element-syntax">message</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">rr</span><span class="plain-syntax">.</span><span class="element-syntax">message</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">rr</span><span class="plain-syntax">.</span><span class="element-syntax">used</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">rr</span><span class="plain-syntax">.</span><span class="element-syntax">used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -710,7 +710,7 @@ response messages have been discovered:
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="2-rls.html#SP23">§23</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="2-rls.html#SP23">§23</a>.</li></ul>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="1-im.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="progresscurrentchapter">2</li><li class="progresscurrent">rls</li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresssection"><a href="2-rlb.html">rlb</a></li><li class="progresssection"><a href="2-fao.html">fao</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="2-rb.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="1-im.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="progresscurrentchapter">2</li><li class="progresscurrent">rls</li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresssection"><a href="2-bl.html">bl</a></li><li class="progresssection"><a href="2-rlb.html">rlb</a></li><li class="progresssection"><a href="2-fao.html">fao</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="2-rb.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -360,7 +360,7 @@ function togglePopup(material_id) {
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="2-fao.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresssection"><a href="2-rlb.html">rlb</a></li><li class="progresssection"><a href="2-fao.html">fao</a></li><li class="progresscurrent">sv</li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="2-act.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="2-fao.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-rb.html">rb</a></li><li class="progresssection"><a href="2-bl.html">bl</a></li><li class="progresssection"><a href="2-rlb.html">rlb</a></li><li class="progresssection"><a href="2-fao.html">fao</a></li><li class="progresscurrent">sv</li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="2-act.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -281,7 +281,7 @@ PHRCDs are used to make sure it appears in the right position.
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Manager::add_rules_to_rulebooks</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Manager::add_rules_to_rulebooks</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EARLY_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EARLY_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-rb.html#SP7" class="function-link"><span class="function-syntax">Rules::Bookings::make_automatic_placements</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="2-rb.html#SP6" class="function-link"><span class="function-syntax">RuleBookings::make_automatic_placements</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">NUMBER_RULEBOOKS_CREATED_HL</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">NUMBER_RULEBOOKS_CREATED_HL</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_numeric_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_numeric_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -136,7 +136,7 @@ rulebooks reach them.
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure ph_runtime_context_data is accessed in 3/pu and here.</li><li>The structure rule_context is accessed in 2/rb, 2/rlb.</li></ul>
|
<ul class="endnotetexts"><li>The structure ph_runtime_context_data is accessed in 3/pu and here.</li><li>The structure rule_context is accessed in 2/rlb.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>As we've seen, PHRCDs are really made by translating them from PHUDs, and
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>As we've seen, PHRCDs are really made by translating them from PHUDs, and
|
||||||
the following only blanks out a PHRCD structure ready for that to happen.
|
the following only blanks out a PHRCD structure ready for that to happen.
|
||||||
</p>
|
</p>
|
||||||
|
@ -201,7 +201,7 @@ the following only blanks out a PHRCD structure ready for that to happen.
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::within_action_context</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Phrases::Context::within_action_context</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP17">§17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">,</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::within_action_context</span><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ActionPatterns::covers_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">ap</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">ActionPatterns::covers_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||||
|
@ -209,13 +209,13 @@ the following only blanks out a PHRCD structure ready for that to happen.
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||||
|
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
<span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Context::required_action</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Phrases::Context::required_action</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP24">§24</a><br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Context::required_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">Phrases::Context::required_action</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">ap</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ActionPatterns::single_positive_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-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">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">ap</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ActionPatterns::single_positive_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">ap</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::suppress_action_testing</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">Phrases::Context::suppress_action_testing</span></span>:<br/>Rules - <a href="2-rls.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::suppress_action_testing</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">Phrases::Context::suppress_action_testing</span></span>:<br/>Rules - <a href="2-rls.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">ap</span><span class="plain-syntax">) </span><span class="identifier-syntax">ActionPatterns::suppress_action_testing</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-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">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">ap</span><span class="plain-syntax">) </span><span class="identifier-syntax">ActionPatterns::suppress_action_testing</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">ap</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
@ -229,7 +229,7 @@ extracts a single specified scene if there is one:
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
<span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Context::get_scene</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">Phrases::Context::get_scene</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP17">§17</a><br/>Rulebooks - <a href="2-rlb.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Context::get_scene</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">Phrases::Context::get_scene</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_rvalue</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">during_scene</span><span 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_rvalue</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">during_scene</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">q</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">during_scene</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">q</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-></span><span class="element-syntax">during_scene</span><span class="plain-syntax">);</span>
|
||||||
|
@ -244,7 +244,7 @@ normally limited to the use of rules in particular rulebooks.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::outcome_restrictions_waived</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">Phrases::Context::outcome_restrictions_waived</span></span>:<br/>Focus and Outcome - <a href="2-fao.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::outcome_restrictions_waived</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">Phrases::Context::outcome_restrictions_waived</span></span>:<br/>Focus and Outcome - <a href="2-fao.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">phrase_being_compiled</span><span class="plain-syntax">) &&</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">phrase_being_compiled</span><span class="plain-syntax">) &&</span>
|
||||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">phrase_being_compiled</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">.</span><span class="element-syntax">permit_all_outcomes</span><span class="plain-syntax">))</span>
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">phrase_being_compiled</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">.</span><span class="element-syntax">permit_all_outcomes</span><span class="plain-syntax">))</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -263,7 +263,7 @@ all of them fail to decide, we return 0.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::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">Phrases::Context::compare_specificity</span></span>:<br/>Rules - <a href="2-rls.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rcd1</span><span class="plain-syntax">,</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::compare_specificity</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">Phrases::Context::compare_specificity</span></span>:<br/>Rules - <a href="2-rls.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rcd1</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rcd2</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rcd2</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, *</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">action_pattern</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>
|
||||||
|
@ -403,7 +403,7 @@ process.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::ensure_avl</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Phrases::Context::ensure_avl</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::ensure_avl</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">Phrases::Context::ensure_avl</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
||||||
|
@ -445,7 +445,7 @@ much.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::compile_test_head</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">Phrases::Context::compile_test_head</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::compile_test_head</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Phrases::Context::compile_test_head</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax"> = </span><a href="3-phr.html#SP10" class="function-link"><span class="function-syntax">Phrases::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax"> = </span><a href="3-phr.html#SP10" class="function-link"><span class="function-syntax">Phrases::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
|
@ -485,7 +485,7 @@ with the default outcome return (see above).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::compile_test_tail</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">Phrases::Context::compile_test_tail</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::compile_test_tail</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">Phrases::Context::compile_test_tail</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax"> = </span><a href="3-phr.html#SP10" class="function-link"><span class="function-syntax">Phrases::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax"> = </span><a href="3-phr.html#SP10" class="function-link"><span class="function-syntax">Phrases::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -683,7 +683,7 @@ of the stem, so we have to be very careful:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_prewhile_text</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">Phrases::Usage::get_prewhile_text</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_prewhile_text</span><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="identifier-syntax">rule_parameter</span><span 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">phud</span><span class="plain-syntax">-></span><span class="identifier-syntax">rule_parameter</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">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">rule_parameter</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">rule_parameter</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><when-while-clause></span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">)) </span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><when-while-clause></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><when-while-clause></span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">)) </span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><when-while-clause></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||||
|
@ -703,35 +703,35 @@ of the stem, so we have to be very careful:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_effect</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">Phrases::Usage::get_effect</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP8">§8</a><br/>Construction Sequence - <a href="3-cs.html#SP11_4">§11.4</a><br/>Phrases - <a href="3-phr.html#SP5">§5</a>, <a href="3-phr.html#SP11">§11</a><br/>Phrasebook Index - <a href="3-pi.html#SP1">§1</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_3">§4.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_effect</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">Phrases::Usage::get_effect</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_4">§11.4</a><br/>Phrases - <a href="3-phr.html#SP5">§5</a>, <a href="3-phr.html#SP11">§11</a><br/>Phrasebook Index - <a href="3-pi.html#SP1">§1</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_3">§4.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">phrase_effect</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">phrase_effect</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_rulebook_placement</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">Phrases::Usage::get_rulebook_placement</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_rulebook_placement</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">Phrases::Usage::get_rulebook_placement</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">owning_rulebook_placement</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">owning_rulebook_placement</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Usage::get_rulebook</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">Phrases::Usage::get_rulebook</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP7">§7</a>, <a href="2-rb.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::Usage::get_rulebook</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">Phrases::Usage::get_rulebook</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">owning_rulebook</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">owning_rulebook</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">Phrases::Usage::set_rulebook</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">Phrases::Usage::set_rulebook</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::set_rulebook</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">Phrases::Usage::set_rulebook</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="identifier-syntax">owning_rulebook</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="identifier-syntax">owning_rulebook</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rb</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_timing_of_event</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">Phrases::Usage::get_timing_of_event</span></span>:<br/>Timed Phrases - <a href="3-tp.html#SP3">§3</a>, <a href="3-tp.html#SP4">§4</a>, <a href="3-tp.html#SP5">§5</a>, <a href="3-tp.html#SP6_1">§6.1</a>, <a href="3-tp.html#SP6_2">§6.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_timing_of_event</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">Phrases::Usage::get_timing_of_event</span></span>:<br/>Timed Phrases - <a href="3-tp.html#SP3">§3</a>, <a href="3-tp.html#SP4">§4</a>, <a href="3-tp.html#SP5">§5</a>, <a href="3-tp.html#SP6_1">§6.1</a>, <a href="3-tp.html#SP6_2">§6.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">timing_of_event</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">timing_of_event</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::has_name_as_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">Phrases::Usage::has_name_as_constant</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_7">§11.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::has_name_as_constant</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">Phrases::Usage::has_name_as_constant</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_7">§11.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">) &&</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">) &&</span>
|
||||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">explicit_name_used_in_maths</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">phud</span><span class="plain-syntax">-></span><span class="element-syntax">explicit_name_used_in_maths</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">Nouns::nominative_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">-></span><span class="element-syntax">name</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">Nouns::nominative_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">)))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_equation_form</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">Phrases::Usage::get_equation_form</span></span>:<br/>Describing Phrase Type Data - <a href="3-dptd.html#SP5">§5</a>, <a href="3-dptd.html#SP6_3">§6.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_equation_form</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">Phrases::Usage::get_equation_form</span></span>:<br/>Describing Phrase Type Data - <a href="3-dptd.html#SP5">§5</a>, <a href="3-dptd.html#SP6_3">§6.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">explicit_name_used_in_maths</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">explicit_name_used_in_maths</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Wordings::first_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Nouns::nominative_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Wordings::first_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Nouns::nominative_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||||
|
@ -755,7 +755,7 @@ it was to debug the preamble-parsing code:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::log</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">Phrases::Usage::log</span></span>:<br/><a href="3-pu.html#SP20_1_1_1">§20.1.1.1</a>, <a href="3-pu.html#SP20_1_1_2">§20.1.1.2</a><br/>Imperative Module - <a href="1-im.html#SP2">§2</a><br/>Rule Bookings - <a href="2-rb.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::log</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">Phrases::Usage::log</span></span>:<br/><a href="3-pu.html#SP20_1_1_1">§20.1.1.1</a>, <a href="3-pu.html#SP20_1_1_2">§20.1.1.2</a><br/>Imperative Module - <a href="1-im.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ram</span><span class="plain-syntax"> = </span><span class="string-syntax">"<UNKNOWN_NT>"</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">ram</span><span class="plain-syntax"> = </span><span class="string-syntax">"<UNKNOWN_NT>"</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">phud</span><span class="plain-syntax">-></span><span class="element-syntax">phrase_effect</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">phud</span><span class="plain-syntax">-></span><span class="element-syntax">phrase_effect</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">AS_YET_UNKNOWN_EFF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">ram</span><span class="plain-syntax"> = </span><span class="string-syntax">"AS_YET_UNKNOWN_EFF"</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">AS_YET_UNKNOWN_EFF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">ram</span><span class="plain-syntax"> = </span><span class="string-syntax">"AS_YET_UNKNOWN_EFF"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
@ -798,7 +798,7 @@ it was to debug the preamble-parsing code:
|
||||||
<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">Phrases::Usage::log_rule_name</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Phrases::Usage::log_rule_name</span></span>:<br/>Phrases - <a href="3-phr.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::log_rule_name</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">Phrases::Usage::log_rule_name</span></span>:<br/>Phrases - <a href="3-phr.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">explicit_name</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">explicit_name</span><span class="plain-syntax">)) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">full_preamble</span><span 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">phud</span><span class="plain-syntax">-></span><span class="element-syntax">full_preamble</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">phud</span><span class="plain-syntax">-></span><span class="element-syntax">full_preamble</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">phud</span><span class="plain-syntax">-></span><span class="element-syntax">full_preamble</span><span class="plain-syntax">);</span>
|
||||||
|
@ -810,7 +810,7 @@ it was to debug the preamble-parsing code:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::write_I6_comment_describing</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">Phrases::Usage::write_I6_comment_describing</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::write_I6_comment_describing</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Phrases::Usage::write_I6_comment_describing</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_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="identifier-syntax">TEMPORARY_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="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">"%~W:"</span><span class="plain-syntax">, </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">full_preamble</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">C</span><span class="plain-syntax">, </span><span class="string-syntax">"%~W:"</span><span class="plain-syntax">, </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">full_preamble</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</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::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||||
|
@ -821,7 +821,7 @@ it was to debug the preamble-parsing code:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::index_preamble</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">Phrases::Usage::index_preamble</span></span>:<br/>Timed Phrases - <a href="3-tp.html#SP6_1">§6.1</a>, <a href="3-tp.html#SP6_2">§6.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::index_preamble</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">Phrases::Usage::index_preamble</span></span>:<br/>Timed Phrases - <a href="3-tp.html#SP6_1">§6.1</a>, <a href="3-tp.html#SP6_2">§6.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">full_preamble</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">full_preamble</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
@ -842,7 +842,7 @@ seen problems in Inform. A couple of variables are needed just for that:
|
||||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b></p>
|
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::to_runtime_context_data</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Phrases::Usage::to_runtime_context_data</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::to_runtime_context_data</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Phrases::Usage::to_runtime_context_data</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = </span><a href="3-prcd.html#SP2" class="function-link"><span class="function-syntax">Phrases::Context::new</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = </span><a href="3-prcd.html#SP2" class="function-link"><span class="function-syntax">Phrases::Context::new</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">phud</span><span class="plain-syntax">-></span><span class="element-syntax">phrase_effect</span><span class="plain-syntax"> == </span><span class="constant-syntax">RULE_NOT_IN_RULEBOOK_EFF</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></span><span class="element-syntax">phrase_effect</span><span class="plain-syntax"> == </span><span class="constant-syntax">RULE_NOT_IN_RULEBOOK_EFF</span><span class="plain-syntax">)</span>
|
||||||
|
|
|
@ -389,7 +389,7 @@ scratch work-space which can be used in the compiled code.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call</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">LocalVariables::add_named_call</span></span>:<br/><a href="4-lv.html#SP46">§46</a><br/>Rule Bookings - <a href="2-rb.html#SP22">§22</a><br/>Phrases as Values - <a href="3-pav.html#SP8_2">§8.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call</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">LocalVariables::add_named_call</span></span>:<br/><a href="4-lv.html#SP46">§46</a><br/>Phrases as Values - <a href="3-pav.html#SP8_2">§8.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</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">phsf</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phsf</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-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_internal</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</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-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_internal</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">,</span>
|
||||||
|
@ -397,7 +397,7 @@ scratch work-space which can be used in the compiled code.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call_as_symbol</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">LocalVariables::add_named_call_as_symbol</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP23_1_1">§23.1.1</a><br/>Rulebooks - <a href="2-rlb.html#SP13_1">§13.1</a><br/>Focus and Outcome - <a href="2-fao.html#SP9">§9</a><br/>Stacked Variables - <a href="2-sv.html#SP3">§3</a><br/>Chronology - <a href="4-chr.html#SP6">§6</a><br/>Cinders and Deferrals - <a href="5-cad.html#SP5">§5</a><br/>Compile Deferred Propositions - <a href="5-cdp.html#SP2_1_5">§2.1.5</a>, <a href="5-cdp.html#SP2_1_5_2">§2.1.5.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call_as_symbol</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">LocalVariables::add_named_call_as_symbol</span></span>:<br/>Rulebooks - <a href="2-rlb.html#SP13_1">§13.1</a><br/>Focus and Outcome - <a href="2-fao.html#SP9">§9</a><br/>Stacked Variables - <a href="2-sv.html#SP3">§3</a><br/>Chronology - <a href="4-chr.html#SP6">§6</a><br/>Cinders and Deferrals - <a href="5-cad.html#SP5">§5</a><br/>Compile Deferred Propositions - <a href="5-cdp.html#SP2_1_5">§2.1.5</a>, <a href="5-cdp.html#SP2_1_5_2">§2.1.5.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v</span><span class="plain-syntax"> = </span><a href="4-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_named_call</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v</span><span class="plain-syntax"> = </span><a href="4-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_named_call</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</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-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -420,7 +420,7 @@ scratch work-space which can be used in the compiled code.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_internal_local_c_as_symbol</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">LocalVariables::add_internal_local_c_as_symbol</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP23_1_1">§23.1.1</a></span></button><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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">comment</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_internal_local_c_as_symbol</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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">comment</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v</span><span class="plain-syntax"> = </span><a href="4-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_internal_local_c</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">comment</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v</span><span class="plain-syntax"> = </span><a href="4-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_internal_local_c</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">comment</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-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -446,7 +446,7 @@ in phrases for which that's relevant.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_switch_value</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">LocalVariables::add_switch_value</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP4_3_5">§4.3.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_switch_value</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">LocalVariables::add_switch_value</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP4_3_5">§4.3.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">LOCAL_VARIABLES</span><span class="plain-syntax">, </span><span class="string-syntax">"Stack frame acquires switch value\n"</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">LOCAL_VARIABLES</span><span class="plain-syntax">, </span><span class="string-syntax">"Stack frame acquires switch value\n"</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-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_internal_local_c</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"sw_v"</span><span class="plain-syntax">, </span><span class="string-syntax">"switch value"</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-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_internal_local_c</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"sw_v"</span><span class="plain-syntax">, </span><span class="string-syntax">"switch value"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -456,7 +456,7 @@ passed to its I6 routine, and this occupies a pseudo-call-parameter:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::options_parameter_is_needed</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::options_parameter_is_needed</span></span>:<br/>Phrases - <a href="3-phr.html#SP5_5">§5.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::options_parameter_is_needed</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">LocalVariables::options_parameter_is_needed</span></span>:<br/>Phrases - <a href="3-phr.html#SP5_5">§5.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_internal</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">),</span>
|
<span class="plain-syntax"> </span><a href="4-lv.html#SP10" class="function-link"><span class="function-syntax">LocalVariables::add_internal</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">),</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"phrase_options"</span><span class="plain-syntax">, </span><span class="constant-syntax">OTHER_CALL_PARAMETER_LV</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"phrase_options"</span><span class="plain-syntax">, </span><span class="constant-syntax">OTHER_CALL_PARAMETER_LV</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -466,7 +466,7 @@ a loop counter disappearing when its loop body is finished.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::deallocate</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::deallocate</span></span>:<br/><a href="4-lv.html#SP15">§15</a>, <a href="4-lv.html#SP40">§40</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP1_5">§1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::deallocate</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::deallocate</span></span>:<br/><a href="4-lv.html#SP15">§15</a>, <a href="4-lv.html#SP40">§40</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP1_5">§1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> != </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> != </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"only let variables can be deallocated"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"only let variables can be deallocated"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocated</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">lvar</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocated</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -480,7 +480,7 @@ a loop counter disappearing when its loop body is finished.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::deallocate_all</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::deallocate_all</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::deallocate_all</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::deallocate_all</span></span>:<br/>Compile Phrases - <a href="6-cp.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">.</span><span class="element-syntax">local_variable_allocation</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">.</span><span class="element-syntax">local_variable_allocation</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">allocated</span><span class="plain-syntax">))</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">allocated</span><span class="plain-syntax">))</span>
|
||||||
|
@ -534,7 +534,7 @@ given fresh names in between now and then.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::find_i6_var</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::find_i6_var</span></span>:<br/><a href="4-lv.html#SP10">§10</a>, <a href="4-lv.html#SP19">§19</a>, <a href="4-lv.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">locals_slate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">slate</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">purpose</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::find_i6_var</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::find_i6_var</span></span>:<br/><a href="4-lv.html#SP10">§10</a>, <a href="4-lv.html#SP19">§19</a>, <a href="4-lv.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">locals_slate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">slate</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">purpose</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">slate</span><span class="plain-syntax">-></span><span class="element-syntax">local_variable_allocation</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">slate</span><span class="plain-syntax">-></span><span class="element-syntax">local_variable_allocation</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="identifier-syntax">purpose</span><span class="plain-syntax">) &&</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="identifier-syntax">purpose</span><span class="plain-syntax">) &&</span>
|
||||||
|
@ -543,7 +543,7 @@ given fresh names in between now and then.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::find_any</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::find_any</span></span>:<br/><a href="4-lv.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">locals_slate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">slate</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="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::find_any</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::find_any</span></span>:<br/><a href="4-lv.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">locals_slate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">slate</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="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">slate</span><span class="plain-syntax">-></span><span class="element-syntax">local_variable_allocation</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">slate</span><span class="plain-syntax">-></span><span class="element-syntax">local_variable_allocation</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">; </span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_lvalue</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_lvalue</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||||
|
@ -555,7 +555,7 @@ given fresh names in between now and then.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::by_name</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::by_name</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP6">§6</a></span></button><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="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::by_name</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::by_name</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP6">§6</a></span></button><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="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</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">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP18" class="function-link"><span class="function-syntax">LocalVariables::find_i6_var</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="constant-syntax">INTERNAL_USE_LV</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-lv.html#SP18" class="function-link"><span class="function-syntax">LocalVariables::find_i6_var</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="constant-syntax">INTERNAL_USE_LV</span><span class="plain-syntax">);</span>
|
||||||
|
@ -588,7 +588,7 @@ given fresh names in between now and then.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::find_const_var</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::find_const_var</span></span>:<br/>Cinders and Deferrals - <a href="5-cad.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::find_const_var</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::find_const_var</span></span>:<br/>Cinders and Deferrals - <a href="5-cad.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</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">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
|
||||||
|
@ -606,7 +606,7 @@ given fresh names in between now and then.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::are_we_using_table_lookup</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::are_we_using_table_lookup</span></span>:<br/>Chronology - <a href="4-chr.html#SP5">§5</a>, <a href="4-chr.html#SP6_4">§6.4</a><br/>Compile Deferred Propositions - <a href="5-cdp.html#SP2_1_3">§2.1.3</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">LocalVariables::are_we_using_table_lookup</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::are_we_using_table_lookup</span></span>:<br/>Chronology - <a href="4-chr.html#SP5">§5</a>, <a href="4-chr.html#SP6_4">§6.4</a><br/>Compile Deferred Propositions - <a href="5-cdp.html#SP2_1_3">§2.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</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">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-lv.html#SP18" class="function-link"><span class="function-syntax">LocalVariables::find_i6_var</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"ct_0"</span><span class="plain-syntax">, </span><span class="constant-syntax">INTERNAL_USE_LV</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-lv.html#SP18" class="function-link"><span class="function-syntax">LocalVariables::find_i6_var</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="element-syntax">local_value_variables</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"ct_0"</span><span class="plain-syntax">, </span><span class="constant-syntax">INTERNAL_USE_LV</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>
|
||||||
|
@ -619,7 +619,7 @@ there isn't one.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::get_ith_parameter</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::get_ith_parameter</span></span>:<br/><a href="4-lv.html#SP25">§25</a><br/>Phrase Type Data - <a href="3-ptd.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::get_ith_parameter</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::get_ith_parameter</span></span>:<br/><a href="4-lv.html#SP25">§25</a><br/>Phrase Type Data - <a href="3-ptd.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</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">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no stack frame exists"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no stack frame exists"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">;</span>
|
||||||
|
@ -645,7 +645,7 @@ very fast.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::parse</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::parse</span></span>:<br/><a href="4-lv.html#SP32">§32</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP5_1">§5.1</a>, <a href="6-cii.html#SP6">§6</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP3_3">§3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</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">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::parse</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::parse</span></span>:<br/><a href="4-lv.html#SP32">§32</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP5_1">§5.1</a>, <a href="6-cii.html#SP6">§6</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP3_3">§3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</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">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><a href="4-lv.html#SP23" class="function-link"><span class="function-syntax">LocalVariables::parse_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phsf</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">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><a href="4-lv.html#SP23" class="function-link"><span class="function-syntax">LocalVariables::parse_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phsf</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">lvar</span><span class="plain-syntax">) </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">parsed_recently</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">lvar</span><span class="plain-syntax">) </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">parsed_recently</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -728,7 +728,7 @@ fake up a call parameter pro tem.)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::it_variable</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::it_variable</span></span>:<br/><a href="4-lv.html#SP23">§23</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::it_variable</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::it_variable</span></span>:<br/><a href="4-lv.html#SP23">§23</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">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</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">phsf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP22" class="function-link"><span class="function-syntax">LocalVariables::get_ith_parameter</span></a><span class="plain-syntax">(0);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP22" class="function-link"><span class="function-syntax">LocalVariables::get_ith_parameter</span></a><span class="plain-syntax">(0);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP6" class="function-link"><span class="function-syntax">LocalVariables::add_to_locals_slate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">TOKEN_CALL_PARAMETER_LV</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-lv.html#SP6" class="function-link"><span class="function-syntax">LocalVariables::add_to_locals_slate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">TOKEN_CALL_PARAMETER_LV</span><span class="plain-syntax">,</span>
|
||||||
|
@ -751,7 +751,7 @@ fake up a call parameter pro tem.)
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="identifier-syntax">local_value_variables</span><span class="plain-syntax">.</span><span class="element-syntax">its_form_allowed</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">phsf</span><span class="plain-syntax">-></span><span class="identifier-syntax">local_value_variables</span><span class="plain-syntax">.</span><span class="element-syntax">its_form_allowed</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">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_pronoun</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::add_pronoun</span></span>:<br/>Phrases - <a href="3-phr.html#SP5_7_1">§5.7.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_pronoun</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::add_pronoun</span></span>:<br/>Phrases - <a href="3-phr.html#SP5_7_1">§5.7.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">phsf</span><span class="plain-syntax">-></span><span class="identifier-syntax">local_value_variables</span><span class="plain-syntax">.</span><span class="element-syntax">it_variable_exists</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">phsf</span><span class="plain-syntax">-></span><span class="identifier-syntax">local_value_variables</span><span class="plain-syntax">.</span><span class="element-syntax">it_variable_exists</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP7" class="function-link"><span class="function-syntax">LocalVariables::add_call_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lv.html#SP7" class="function-link"><span class="function-syntax">LocalVariables::add_call_parameter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -841,7 +841,7 @@ the text "X":
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::ensure_called_local</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::ensure_called_local</span></span>:<br/><a href="4-lv.html#SP31">§31</a><br/>Deciding to Defer - <a href="5-dtd.html#SP8_2">§8.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::ensure_called_local</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::ensure_called_local</span></span>:<br/><a href="4-lv.html#SP31">§31</a><br/>Deciding to Defer - <a href="5-dtd.html#SP8_2">§8.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</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">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> in case callings are made from parsing alone</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> in case callings are made from parsing alone</span>
|
||||||
<span class="plain-syntax"> </span><span class="function-syntax"><new-called-name></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="function-syntax"><new-called-name></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||||
|
@ -990,7 +990,7 @@ an instance of the kind "bystander".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::permit_as_new_local</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::permit_as_new_local</span></span>:<br/><a href="4-lv.html#SP32_2">§32.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">found</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">as_calling</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::permit_as_new_local</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::permit_as_new_local</span></span>:<br/><a href="4-lv.html#SP32_2">§32.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">found</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">as_calling</span><span 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">found</span><span class="plain-syntax">, </span><span class="identifier-syntax">AMBIGUITY_NT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">found</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="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">found</span><span class="plain-syntax">, </span><span class="identifier-syntax">AMBIGUITY_NT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">found</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Specifications::is_kind_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">found</span><span class="plain-syntax">)) &&</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Specifications::is_kind_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">found</span><span class="plain-syntax">)) &&</span>
|
||||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">found</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">found</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1009,7 +1009,7 @@ an instance of the kind "bystander".
|
||||||
<p class="commentary firstcommentary"><a id="SP34" class="paragraph-anchor"></a><b>§34. Logging. </b></p>
|
<p class="commentary firstcommentary"><a id="SP34" class="paragraph-anchor"></a><b>§34. Logging. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::log</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::log</span></span>:<br/>Imperative Module - <a href="1-im.html#SP2">§2</a><br/>Stack Frames - <a href="4-sf.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::log</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::log</span></span>:<br/>Imperative Module - <a href="1-im.html#SP2">§2</a><br/>Stack Frames - <a href="4-sf.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="4-lv.html#SP34" class="function-link"><span class="function-syntax">LocalVariables::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="4-lv.html#SP34" class="function-link"><span class="function-syntax">LocalVariables::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -1037,7 +1037,7 @@ an instance of the kind "bystander".
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::kind</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::kind</span></span>:<br/><a href="4-lv.html#SP42">§42</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP3_3_2">§3.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::kind</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::kind</span></span>:<br/><a href="4-lv.html#SP42">§42</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP3_3_2">§3.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</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">"Tried to find kind of nonexistent local variable"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</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">"Tried to find kind of nonexistent local variable"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">kind_as_declared</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">kind_as_declared</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -1052,7 +1052,7 @@ exists to fix that:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::set_kind</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::set_kind</span></span>:<br/><a href="4-lv.html#SP30">§30</a>, <a href="4-lv.html#SP46">§46</a><br/>Phrase Type Data - <a href="3-ptd.html#SP19">§19</a><br/>Deciding to Defer - <a href="5-dtd.html#SP27">§27</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_1_1_1">§3.5.1.1.1</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_5_3">§4.3.5.3</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP3_3_2">§3.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::set_kind</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::set_kind</span></span>:<br/><a href="4-lv.html#SP30">§30</a>, <a href="4-lv.html#SP46">§46</a><br/>Phrase Type Data - <a href="3-ptd.html#SP19">§19</a><br/>Deciding to Defer - <a href="5-dtd.html#SP27">§27</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_1_1_1">§3.5.1.1.1</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_5_3">§4.3.5.3</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP3_3_2">§3.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</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">"Tried to set kind of nonexistent local variable"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</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">"Tried to set kind of nonexistent local variable"</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">LOCAL_VARIABLES</span><span class="plain-syntax">, </span><span class="string-syntax">"Kind of local $k set to %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">lvar</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">LOCAL_VARIABLES</span><span class="plain-syntax">, </span><span class="string-syntax">"Kind of local $k set to %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">lvar</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">lvar</span><span class="plain-syntax">-></span><span class="identifier-syntax">kind_as_declared</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">lvar</span><span class="plain-syntax">-></span><span class="identifier-syntax">kind_as_declared</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1066,12 +1066,12 @@ worth making the change, even though the disruption would be small.)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::unprotect</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::unprotect</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_2">§3.5.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::unprotect</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::unprotect</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_2">§3.5.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">protected</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">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">protected</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::protected</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::protected</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_4_2">§3.5.4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::protected</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::protected</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_4_2">§3.5.4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">protected</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">protected</span><span class="plain-syntax">)) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">varname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">varname</span><span class="plain-syntax">);</span>
|
||||||
|
@ -1095,7 +1095,7 @@ and when the block ends it decrements.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::set_scope_to</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::set_scope_to</span></span>:<br/>Phrase Blocks - <a href="4-pb.html#SP17">§17</a>, <a href="4-pb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::set_scope_to</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::set_scope_to</span></span>:<br/>Phrase Blocks - <a href="4-pb.html#SP17">§17</a>, <a href="4-pb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">s</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">s</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_purpose</span><span class="plain-syntax"> == </span><span class="constant-syntax">LET_VALUE_LV</span><span class="plain-syntax">)) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">block_scope</span><span class="plain-syntax"> = </span><span class="identifier-syntax">s</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">block_scope</span><span class="plain-syntax"> = </span><span class="identifier-syntax">s</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">LOCAL_VARIABLES</span><span class="plain-syntax">, </span><span class="string-syntax">"Setting scope of $k to block level %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="identifier-syntax">s</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">LOCAL_VARIABLES</span><span class="plain-syntax">, </span><span class="string-syntax">"Setting scope of $k to block level %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="identifier-syntax">s</span><span class="plain-syntax">);</span>
|
||||||
|
@ -1106,11 +1106,11 @@ and when the block ends it decrements.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::mark_to_free_at_end_of_scope</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::mark_to_free_at_end_of_scope</span></span>:<br/>Deciding to Defer - <a href="5-dtd.html#SP27">§27</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::mark_to_free_at_end_of_scope</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::mark_to_free_at_end_of_scope</span></span>:<br/>Deciding to Defer - <a href="5-dtd.html#SP27">§27</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="identifier-syntax">free_at_end_of_scope</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">lvar</span><span class="plain-syntax">-></span><span class="identifier-syntax">free_at_end_of_scope</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::end_scope</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::end_scope</span></span>:<br/>Phrase Blocks - <a href="4-pb.html#SP12">§12</a>, <a href="4-pb.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::end_scope</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::end_scope</span></span>:<br/>Phrase Blocks - <a href="4-pb.html#SP12">§12</a>, <a href="4-pb.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::current_stack_frame</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">phsf</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">"relinquishing locals where no stack frame exists"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phsf</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">"relinquishing locals where no stack frame exists"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">s</span><span class="plain-syntax"> <= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"the outermost scope cannot end"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">s</span><span class="plain-syntax"> <= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"the outermost scope cannot end"</span><span class="plain-syntax">);</span>
|
||||||
|
@ -1173,7 +1173,7 @@ value.
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">callings_session_number</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CALLINGS_IN_MATCH</span><span class="plain-syntax">];</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">callings_session_number</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CALLINGS_IN_MATCH</span><span class="plain-syntax">];</span>
|
||||||
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">callings_in_condition</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CALLINGS_IN_MATCH</span><span class="plain-syntax">];</span>
|
<span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">callings_in_condition</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CALLINGS_IN_MATCH</span><span class="plain-syntax">];</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::add_calling_to_condition</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">LocalVariables::add_calling_to_condition</span></span>:<br/>Deciding to Defer - <a href="5-dtd.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::add_calling_to_condition</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">LocalVariables::add_calling_to_condition</span></span>:<br/>Deciding to Defer - <a href="5-dtd.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_session_number</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no PM session"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_session_number</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no PM session"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">callings_in_condition_sp</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax"> == </span><span class="constant-syntax">MAX_CALLINGS_IN_MATCH</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">callings_in_condition_sp</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax"> == </span><span class="constant-syntax">MAX_CALLINGS_IN_MATCH</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">), </span><span class="comment-syntax"> or very hard, anyway</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">), </span><span class="comment-syntax"> or very hard, anyway</span>
|
||||||
|
@ -1185,13 +1185,13 @@ value.
|
||||||
<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">LocalVariables::begin_condition_emit</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">LocalVariables::begin_condition_emit</span></span>:<br/>Deciding to Defer - <a href="5-dtd.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::begin_condition_emit</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">LocalVariables::begin_condition_emit</span></span>:<br/>Deciding to Defer - <a href="5-dtd.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_session_number</span><span class="plain-syntax">++;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_session_number</span><span class="plain-syntax">++;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">OR_BIP</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">OR_BIP</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||||
<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">LocalVariables::end_condition_emit</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">LocalVariables::end_condition_emit</span></span>:<br/>Deciding to Defer - <a href="5-dtd.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::end_condition_emit</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">LocalVariables::end_condition_emit</span></span>:<br/>Deciding to Defer - <a href="5-dtd.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_session_number</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unstarted PM session"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_session_number</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unstarted PM session"</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">NC</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">x</span><span class="plain-syntax"> = </span><span class="identifier-syntax">callings_in_condition_sp</span><span class="plain-syntax">, </span><span class="identifier-syntax">downs</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">NC</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">x</span><span class="plain-syntax"> = </span><span class="identifier-syntax">callings_in_condition_sp</span><span class="plain-syntax">, </span><span class="identifier-syntax">downs</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||||
|
@ -1237,7 +1237,7 @@ lvalue which can be used to evaluate or assign to the variable:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::writer</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">LocalVariables::writer</span></span>:<br/>Imperative Module - <a href="1-im.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format_string</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vL</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::writer</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">LocalVariables::writer</span></span>:<br/>Imperative Module - <a href="1-im.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">format_string</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vL</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">vL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">vL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no such variable"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no such variable"</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">format_string</span><span class="plain-syntax">[0]) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format_string</span><span class="plain-syntax">[0]) {</span>
|
||||||
|
@ -1313,7 +1313,7 @@ need in the compilation of any given routine:
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::declare_this</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">LocalVariables::declare_this</span></span>:<br/><a href="4-lv.html#SP7">§7</a>, <a href="4-lv.html#SP9">§9</a>, <a href="4-lv.html#SP10">§10</a>, <a href="4-lv.html#SP26">§26</a>, <a href="4-lv.html#SP27">§27</a>, <a href="4-lv.html#SP28">§28</a>, <a href="4-lv.html#SP40">§40</a>, <a href="4-lv.html#SP42">§42</a>, <a href="4-lv.html#SP44">§44</a><br/>Deciding to Defer - <a href="5-dtd.html#SP8">§8</a>, <a href="5-dtd.html#SP23">§23</a>, <a href="5-dtd.html#SP25">§25</a>, <a href="5-dtd.html#SP26">§26</a>, <a href="5-dtd.html#SP27">§27</a><br/>Cinders and Deferrals - <a href="5-cad.html#SP7">§7</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP1_2_1">§1.2.1</a>, <a href="6-cii.html#SP3_5_1">§3.5.1</a>, <a href="6-cii.html#SP3_5_3">§3.5.3</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_5">§4.3.5</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shell_mode</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="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::declare_this</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">LocalVariables::declare_this</span></span>:<br/><a href="4-lv.html#SP7">§7</a>, <a href="4-lv.html#SP9">§9</a>, <a href="4-lv.html#SP10">§10</a>, <a href="4-lv.html#SP26">§26</a>, <a href="4-lv.html#SP27">§27</a>, <a href="4-lv.html#SP28">§28</a>, <a href="4-lv.html#SP40">§40</a>, <a href="4-lv.html#SP42">§42</a>, <a href="4-lv.html#SP44">§44</a><br/>Deciding to Defer - <a href="5-dtd.html#SP8">§8</a>, <a href="5-dtd.html#SP23">§23</a>, <a href="5-dtd.html#SP25">§25</a>, <a href="5-dtd.html#SP26">§26</a>, <a href="5-dtd.html#SP27">§27</a><br/>Cinders and Deferrals - <a href="5-cad.html#SP7">§7</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP1_2_1">§1.2.1</a>, <a href="6-cii.html#SP3_5_1">§3.5.1</a>, <a href="6-cii.html#SP3_5_3">§3.5.3</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_5">§4.3.5</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">shell_mode</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="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::local_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_lvalue</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::local_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">lv_lvalue</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
@ -1339,7 +1339,7 @@ need in the compilation of any given routine:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::comment_on</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">LocalVariables::comment_on</span></span>:<br/><a href="4-lv.html#SP46">§46</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">purpose</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LocalVariables::comment_on</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">LocalVariables::comment_on</span></span>:<br/><a href="4-lv.html#SP46">§46</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">purpose</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">purpose</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">purpose</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">TOKEN_CALL_PARAMETER_LV:</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TOKEN_CALL_PARAMETER_LV:</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">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">varname</span><span 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">lvar</span><span class="plain-syntax">-></span><span class="element-syntax">varname</span><span class="plain-syntax">))</span>
|
||||||
|
|
|
@ -267,7 +267,7 @@ a value in a context where a particular kind of value is expected:
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</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">Specifications::Compiler::emit</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">Specifications::Compiler::emit</span></span>:<br/>Rule Bookings - <a href="2-rb.html#SP23_1_3">§23.1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Specifications::Compiler::emit</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">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_DATA_VHMODE</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">Holsters::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">INTER_DATA_VHMODE</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="constant-syntax">BEGIN_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="constant-syntax">BEGIN_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -281,7 +281,7 @@ a value in a context where a particular kind of value is expected:
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_generic_entry</span><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_generic_entry</span><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">Specifications::Compiler::emit_as_val</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Specifications::Compiler::emit_as_val</span></span>:<br/><a href="5-cfs.html#SP7">§7</a><br/>Rule Bookings - <a href="2-rb.html#SP23_1_3">§23.1.3</a><br/>Activities - <a href="2-act.html#SP12">§12</a><br/>Chronology - <a href="4-chr.html#SP6_4_1">§6.4.1</a><br/>Deciding to Defer - <a href="5-dtd.html#SP6_1_2">§6.1.2</a>, <a href="5-dtd.html#SP14">§14</a>, <a href="5-dtd.html#SP16">§16</a>, <a href="5-dtd.html#SP17">§17</a>, <a href="5-dtd.html#SP19">§19</a>, <a href="5-dtd.html#SP20">§20</a>, <a href="5-dtd.html#SP22">§22</a>, <a href="5-dtd.html#SP23">§23</a>, <a href="5-dtd.html#SP25">§25</a>, <a href="5-dtd.html#SP27">§27</a><br/>Cinders and Deferrals - <a href="5-cad.html#SP3">§3</a><br/>Compile Invocations As Calls - <a href="6-ciac.html#SP2">§2</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_1_1_4_9">§3.1.1.4.9</a>, <a href="6-cii.html#SP3_1_1_4_10">§3.1.1.4.10</a>, <a href="6-cii.html#SP8">§8</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_5">§4.3.5</a>, <a href="6-cp.html#SP4_3_5_1">§4.3.5.1</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP4">§4</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">spec</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Specifications::Compiler::emit_as_val</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">Specifications::Compiler::emit_as_val</span></span>:<br/><a href="5-cfs.html#SP7">§7</a><br/>Activities - <a href="2-act.html#SP12">§12</a><br/>Chronology - <a href="4-chr.html#SP6_4_1">§6.4.1</a><br/>Deciding to Defer - <a href="5-dtd.html#SP6_1_2">§6.1.2</a>, <a href="5-dtd.html#SP14">§14</a>, <a href="5-dtd.html#SP16">§16</a>, <a href="5-dtd.html#SP17">§17</a>, <a href="5-dtd.html#SP19">§19</a>, <a href="5-dtd.html#SP20">§20</a>, <a href="5-dtd.html#SP22">§22</a>, <a href="5-dtd.html#SP23">§23</a>, <a href="5-dtd.html#SP25">§25</a>, <a href="5-dtd.html#SP27">§27</a><br/>Cinders and Deferrals - <a href="5-cad.html#SP3">§3</a><br/>Compile Invocations As Calls - <a href="6-ciac.html#SP2">§2</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_1_1_4_9">§3.1.1.4.9</a>, <a href="6-cii.html#SP3_1_1_4_10">§3.1.1.4.10</a>, <a href="6-cii.html#SP8">§8</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_5">§4.3.5</a>, <a href="6-cp.html#SP4_3_5_1">§4.3.5.1</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP4">§4</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">spec</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">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="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><a href="5-cfs.html#SP5" class="function-link"><span class="function-syntax">Specifications::Compiler::compile_inner</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="5-cfs.html#SP5" class="function-link"><span class="function-syntax">Specifications::Compiler::compile_inner</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
|
@ -97,7 +97,12 @@
|
||||||
<li>
|
<li>
|
||||||
<p class="sectionentry"><a href="2-rb.html">
|
<p class="sectionentry"><a href="2-rb.html">
|
||||||
<spon class="sectiontitle">Rule Bookings</span></a> -
|
<spon class="sectiontitle">Rule Bookings</span></a> -
|
||||||
<span class="sectionpurpose">Bookings are assignments of rules to rulebooks. We can think of them as being looseleaf pages, of which we have an unlimited supply: any rule can be written on them, and they can be bound into any rulebook at any specified position.</span></p>
|
<span class="sectionpurpose">Bookings are assignments of rules to rulebooks.</span></p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<p class="sectionentry"><a href="2-bl.html">
|
||||||
|
<spon class="sectiontitle">Booking Lists</span></a> -
|
||||||
|
<span class="sectionpurpose">Booking lists are linked lists of rule bookings.</span></p>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p class="sectionentry"><a href="2-rlb.html">
|
<p class="sectionentry"><a href="2-rlb.html">
|
||||||
|
|
|
@ -12,6 +12,14 @@
|
||||||
<link href="../docs-assets/Navigation.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/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/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
<script>
|
||||||
|
function togglePopup(material_id) {
|
||||||
|
var popup = document.getElementById(material_id);
|
||||||
|
popup.classList.toggle("show");
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
@ -64,7 +72,7 @@
|
||||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">index</a></li><li><a href="index.html#2">Chapter 2: Indexing</a></li><li><b>Rules</b></li></ul></div>
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">index</a></li><li><a href="index.html#2">Chapter 2: Indexing</a></li><li><b>Rules</b></li></ul></div>
|
||||||
<p class="purpose">To index rules and rulebooks.</p>
|
<p class="purpose">To index rules and rulebooks.</p>
|
||||||
|
|
||||||
<ul class="toc"><li><a href="2-rls.html#SP1">§1. Indexing</a></li></ul><hr class="tocbar">
|
<ul class="toc"><li><a href="2-rls.html#SP1">§1. Indexing</a></li><li><a href="2-rls.html#SP3">§3. Indexing of lists</a></li></ul><hr class="tocbar">
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Indexing. </b>Some rules are provided with index text:
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Indexing. </b>Some rules are provided with index text:
|
||||||
</p>
|
</p>
|
||||||
|
@ -89,7 +97,7 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">IXRules::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">IXRules::index</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">IXRules::index</span></span>:<br/><a href="2-rls.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</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">no_responses_indexed</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">no_responses_indexed</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">italicised_text</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-rls.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Index the italicised text to do with the rule</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">italicised_text</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-rls.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Index the italicised text to do with the rule</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-rls.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Index the rule name along with Javascript buttons</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-rls.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Index the rule name along with Javascript buttons</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
@ -217,6 +225,85 @@
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="2-rls.html#SP2">§2</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="2-rls.html#SP2">§2</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Indexing of lists. </b>There's a division of labour: here we arrange the index of the rules and
|
||||||
|
show the linkage between them, while the actual content for each rule is
|
||||||
|
handled in the "Rules" section.
|
||||||
|
</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">IXRules::index_booking_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</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">billing</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp_count</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RuleBookings::get_rule</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</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">skip</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rules::get_defn_as_phrase</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="identifier-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">during_scene</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Phrases::Context::get_scene</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">rc</span><span class="plain-syntax">.</span><span class="identifier-syntax">scene_context</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">during_scene</span><span class="plain-syntax"> != </span><span class="identifier-syntax">rc</span><span class="plain-syntax">.</span><span class="identifier-syntax">scene_context</span><span class="plain-syntax">)) </span><span class="identifier-syntax">skip</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">rc</span><span class="plain-syntax">.</span><span class="identifier-syntax">action_context</span><span class="plain-syntax">) &&</span>
|
||||||
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">Phrases::Context::within_action_context</span><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">.</span><span class="identifier-syntax">action_context</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">skip</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">skip</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">count</span><span class="plain-syntax">++;</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-rls.html#SP4" class="function-link"><span class="function-syntax">IXRules::br_start_index_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">billing</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> *</span><span class="identifier-syntax">resp_count</span><span class="plain-syntax"> += </span><a href="2-rls.html#SP2" class="function-link"><span class="function-syntax">IXRules::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">br</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">count</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>The "index links" are not hypertextual: they're the little icons showing
|
||||||
|
the order of precedence of rules in the list. On some index pages we don't
|
||||||
|
want this, so:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">show_index_links</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IXRules::list_suppress_indexed_links</span><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">show_index_links</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IXRules::list_resume_indexed_links</span><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">show_index_links</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IXRules::br_start_index_line</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">IXRules::br_start_index_line</span></span>:<br/><a href="2-rls.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">billing</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">billing</span><span class="plain-syntax">[0]) && (</span><span class="identifier-syntax">show_index_links</span><span class="plain-syntax">)) </span><a href="2-rls.html#SP5" class="function-link"><span class="function-syntax">IXRules::br_show_linkage_icon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">billing</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;&nbsp;&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">billing</span><span class="plain-syntax">[0] == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">show_index_links</span><span class="plain-syntax">)) </span><a href="2-rls.html#SP5" class="function-link"><span class="function-syntax">IXRules::br_show_linkage_icon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>And here's how the index links (if wanted) are chosen and plotted:
|
||||||
|
</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">IXRules::br_show_linkage_icon</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">IXRules::br_show_linkage_icon</span></span>:<br/><a href="2-rls.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prev</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> redundant assignment to appease </span><span class="extract"><span class="extract-syntax">gcc -O2</span></span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prev</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="identifier-syntax">commentary</span><span class="plain-syntax">.</span><span class="identifier-syntax">tooltip_text</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">HTML::icon_with_tooltip</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform:/doc_images/rulenone.png"</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"start of rulebook"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="identifier-syntax">commentary</span><span class="plain-syntax">.</span><span class="identifier-syntax">next_rule_specificity</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> -1: </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform:/doc_images/ruleless.png"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform:/doc_images/ruleequal.png"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform:/doc_images/rulemore.png"</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">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unknown rule specificity"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::icon_with_tooltip</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="identifier-syntax">commentary</span><span class="plain-syntax">.</span><span class="identifier-syntax">tooltip_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="identifier-syntax">commentary</span><span class="plain-syntax">.</span><span class="identifier-syntax">law_applied</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="2-inf.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresscurrent">rls</li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="3-fgr.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="2-inf.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresscurrent">rls</li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="3-fgr.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
|
@ -75,7 +75,7 @@ which use this module:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">Rules::Bookings::log</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">RuleBookings::log</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *, </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *, </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *, </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *, </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *, </span><a href="3-prp.html#SP14" class="function-link"><span class="function-syntax">Properties::log</span></a><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *, </span><a href="3-prp.html#SP14" class="function-link"><span class="function-syntax">Properties::log</span></a><span class="plain-syntax">)</span>
|
||||||
|
@ -107,7 +107,7 @@ which use this module:
|
||||||
<span class="plain-syntax"> </span><a href="3-spr2.html#SP1" class="function-link"><span class="function-syntax">SettingPropertyRelations::start</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="3-spr2.html#SP1" class="function-link"><span class="function-syntax">SettingPropertyRelations::start</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-cr.html#SP2" class="function-link"><span class="function-syntax">ComparativeRelations::start</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="3-cr.html#SP2" class="function-link"><span class="function-syntax">ComparativeRelations::start</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-tpr.html#SP2" class="function-link"><span class="function-syntax">ProvisionRelation::start</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="3-tpr.html#SP2" class="function-link"><span class="function-syntax">ProvisionRelation::start</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'b'</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rules::Bookings::log</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'b'</span><span class="plain-syntax">, </span><span class="identifier-syntax">RuleBookings::log</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'I'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'I'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'j'</span><span class="plain-syntax">, </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'j'</span><span class="plain-syntax">, </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'K'</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rulebooks::log</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'K'</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rulebooks::log</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
|
@ -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">runtime</a></li><li><a href="index.html#4">Chapter 4: Compilation Utilities</a></li><li><b>Rules</b></li></ul></div>
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">runtime</a></li><li><a href="index.html#4">Chapter 4: Compilation Utilities</a></li><li><b>Rules</b></li></ul></div>
|
||||||
<p class="purpose">To compile run-time support for rules.</p>
|
<p class="purpose">To compile run-time support for rules.</p>
|
||||||
|
|
||||||
<ul class="toc"><li><a href="4-rls.html#SP3">§3. Compilation</a></li><li><a href="4-rls.html#SP5">§5. Printing rule names at run time</a></li></ul><hr class="tocbar">
|
<ul class="toc"><li><a href="4-rls.html#SP3">§3. Compilation</a></li><li><a href="4-rls.html#SP5">§5. Printing rule names at run time</a></li><li><a href="4-rls.html#SP7">§7. Compilation of I6-format rulebook</a></li></ul><hr class="tocbar">
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||||
|
|
||||||
|
@ -435,6 +435,323 @@ failing; so it doesn't terminate the following of its rulebook.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Phrases::Usage::write_I6_comment_describing</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">-></span><span class="identifier-syntax">usage_data</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Phrases::Usage::write_I6_comment_describing</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">-></span><span class="identifier-syntax">usage_data</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Compilation of I6-format rulebook. </b>The following can generate both old-style array rulebooks and routine rulebooks,
|
||||||
|
which were introduced in December 2010.
|
||||||
|
</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">RTRules::start_list_compilation</span><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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</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">EMPTY_RULEBOOK_INAME_HL</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="4-rtn.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LocalVariables::add_named_call</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"forbid_breaks"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::rfalse</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><a href="4-rtn.html#SP4" class="function-link"><span class="function-syntax">Routines::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><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">iname</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
||||||
|
|
||||||
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">ARRAY_RBF</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="comment-syntax"> format as an array simply listing the rules</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">GROUPED_ARRAY_RBF</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="comment-syntax"> format as a grouped array, for quicker action testing</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">ROUTINE_RBF</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> </span><span class="comment-syntax"> format as a routine which runs the rulebook</span>
|
||||||
|
<span class="definition-keyword">define</span> <span class="constant-syntax">RULE_OPTIMISATION_THRESHOLD</span><span class="plain-syntax"> </span><span class="constant-syntax">20</span><span class="plain-syntax"> </span><span class="comment-syntax"> group arrays when larger than this number of rules</span>
|
||||||
|
</pre>
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTRules::list_compile</span><span class="plain-syntax">(</span><span class="identifier-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">action_based</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parameter_based</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb_symb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">countup</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BookingLists::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">countup</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">rb_symb</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_iname_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">,</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">EMPTY_RULEBOOK_INAME_HL</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">format</span><span class="plain-syntax"> = </span><span class="constant-syntax">ROUTINE_RBF</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Compile the rulebook in the given format</span><span class="named-paragraph-number">8.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rb_symb</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8_1" class="paragraph-anchor"></a><b>§8.1. </b>Grouping is the practice of gathering together rules which all rely on
|
||||||
|
the same action going on; it's then efficient to test the action once rather
|
||||||
|
than once for each rule.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the rulebook in the given format</span><span class="named-paragraph-number">8.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">grouping</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">group_cap</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">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format</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">GROUPED_ARRAY_RBF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">grouping</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">group_cap</span><span class="plain-syntax"> = </span><span class="constant-syntax">31</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">ROUTINE_RBF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">grouping</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">group_cap</span><span class="plain-syntax"> = </span><span class="constant-syntax">2000000000</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">action_based</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">grouping</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">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">forbid_breaks_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">rv_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">original_deadflag_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">p_s</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">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save_array</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::unused_packaging_state</span></a><span class="plain-syntax">();</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP8_1_1" class="named-paragraph-link"><span class="named-paragraph">Open the rulebook compilation</span><span class="named-paragraph-number">8.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">group_size</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">group_started</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">action_group_open</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">LOOP_OVER_BOOKINGS</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</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">Rvalues::from_rule</span><span class="plain-syntax">(</span><span class="identifier-syntax">RuleBookings::get_rule</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">grouping</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">group_size</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">group_started</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP8_1_4" class="named-paragraph-link"><span class="named-paragraph">End an action group in the rulebook</span><span class="named-paragraph-number">8.1.4</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-rls.html#SP9" class="function-link"><span class="function-syntax">RTRules::br_required_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">brg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">br</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">brg</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">an</span><span class="plain-syntax"> == </span><a href="4-rls.html#SP9" class="function-link"><span class="function-syntax">RTRules::br_required_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">brg</span><span class="plain-syntax">))) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">group_size</span><span class="plain-syntax">++;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">brg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">brg</span><span class="plain-syntax">-></span><span class="identifier-syntax">next_booking</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">brg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">br</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">brg</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">group_size</span><span class="plain-syntax">++;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">brg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">brg</span><span class="plain-syntax">-></span><span class="identifier-syntax">next_booking</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">group_size</span><span class="plain-syntax"> > </span><span class="identifier-syntax">group_cap</span><span class="plain-syntax">) </span><span class="identifier-syntax">group_size</span><span class="plain-syntax"> = </span><span class="identifier-syntax">group_cap</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">group_started</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP8_1_2" class="named-paragraph-link"><span class="named-paragraph">Begin an action group in the rulebook</span><span class="named-paragraph-number">8.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">group_size</span><span class="plain-syntax">--;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP8_1_3" class="named-paragraph-link"><span class="named-paragraph">Compile an entry in the rulebook</span><span class="named-paragraph-number">8.1.3</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">entry_count</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">group_started</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP8_1_4" class="named-paragraph-link"><span class="named-paragraph">End an action group in the rulebook</span><span class="named-paragraph-number">8.1.4</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP8_1_5" class="named-paragraph-link"><span class="named-paragraph">Close the rulebook compilation</span><span class="named-paragraph-number">8.1.5</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP8">§8</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8_1_1" class="paragraph-anchor"></a><b>§8.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Open the rulebook compilation</span><span class="named-paragraph-number">8.1.1</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rb_symb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">identifier</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">format</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">ARRAY_RBF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">save_array</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</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">GROUPED_ARRAY_RBF:</span><span class="plain-syntax"> </span><span class="identifier-syntax">save_array</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">); </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) -2); </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">ROUTINE_RBF:</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">save_array</span><span class="plain-syntax"> = </span><a href="4-rtn.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">forbid_breaks_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_named_call_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"forbid_breaks"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">rv_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_c_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"rv"</span><span class="plain-syntax">, </span><span class="string-syntax">"return value"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">countup</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">original_deadflag_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_c_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"original_deadflag"</span><span class="plain-syntax">, </span><span class="string-syntax">"saved state"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parameter_based</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">p_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_c_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"rulebook parameter"</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">countup</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::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>
|
||||||
|
<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::ref_symbol</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><span class="identifier-syntax">original_deadflag_s</span><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">DEADFLAG_HL</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parameter_based</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><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::ref_symbol</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><span class="identifier-syntax">p_s</span><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">PARAMETER_VALUE_HL</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">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP8_1">§8.1</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8_1_2" class="paragraph-anchor"></a><b>§8.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Begin an action group in the rulebook</span><span class="named-paragraph-number">8.1.2</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format</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">GROUPED_ARRAY_RBF:</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">) </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_action_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) -2);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">group_size</span><span class="plain-syntax"> > </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">group_size</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">action_group_open</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">ROUTINE_RBF:</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">IFELSE_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">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::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">ACTION_HL</span><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="5-act.html#SP1" class="function-link"><span class="function-syntax">RTActions::double_sharp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">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::code</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::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">action_group_open</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP8_1">§8.1</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8_1_3" class="paragraph-anchor"></a><b>§8.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile an entry in the rulebook</span><span class="named-paragraph-number">8.1.3</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format</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">ARRAY_RBF:</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">GROUPED_ARRAY_RBF:</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::emit</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">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">ROUTINE_RBF:</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry_count</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::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">IF_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">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::val_symbol</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><span class="identifier-syntax">original_deadflag_s</span><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">DEADFLAG_HL</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::code</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::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">RETURN_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</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="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="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP8_1_3_1" class="named-paragraph-link"><span class="named-paragraph">Compile an optional mid-rulebook paragraph break</span><span class="named-paragraph-number">8.1.3.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parameter_based</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><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::ref_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">PARAMETER_VALUE_HL</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</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><span class="identifier-syntax">p_s</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="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>
|
||||||
|
<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::ref_symbol</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><span class="identifier-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">INDIRECT0_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">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</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::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">IF_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_symbol</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><span class="identifier-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</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::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">IF_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">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::val_symbol</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><span class="identifier-syntax">rv_s</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">2</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::code</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::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">RETURN_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">REASON_THE_ACTION_FAILED_HL</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::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::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">RETURN_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">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</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::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::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>
|
||||||
|
<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">LOOKUPREF_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">LATEST_RULE_RESULT_HL</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="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>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP8_1">§8.1</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8_1_4" class="paragraph-anchor"></a><b>§8.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">End an action group in the rulebook</span><span class="named-paragraph-number">8.1.4</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">action_group_open</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">format</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">ROUTINE_RBF:</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::code</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::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="named-paragraph-container code-font"><a href="4-rls.html#SP8_1_3_1" class="named-paragraph-link"><span class="named-paragraph">Compile an optional mid-rulebook paragraph break</span><span class="named-paragraph-number">8.1.3.1</span></a></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="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">action_group_open</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP8_1">§8.1</a> (twice).</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8_1_5" class="paragraph-anchor"></a><b>§8.1.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Close the rulebook compilation</span><span class="named-paragraph-number">8.1.5</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format</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">ARRAY_RBF:</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">GROUPED_ARRAY_RBF:</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_null_entry</span></a><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save_array</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">ROUTINE_RBF:</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">RETURN_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</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><a href="4-rtn.html#SP4" class="function-link"><span class="function-syntax">Routines::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save_array</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP8_1">§8.1</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP8_1_3_1" class="paragraph-anchor"></a><b>§8.1.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile an optional mid-rulebook paragraph break</span><span class="named-paragraph-number">8.1.3.1</span></span><span class="comment-syntax"> =</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">entry_count</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::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">IF_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_number</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">SAY__P_HL</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</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::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_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">RULEBOOKPARBREAK_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_symbol</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><span class="identifier-syntax">forbid_breaks_s</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::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>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP8_1_3">§8.1.3</a>, <a href="4-rls.html#SP8_1_4">§8.1.4</a>.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b></p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="plain-syntax">#</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||||
|
<span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTRules::br_required_action</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">RTRules::br_required_action</span></span>:<br/><a href="4-rls.html#SP8_1">§8.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">br</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rules::get_defn_as_phrase</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="identifier-syntax">rule_being_booked</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Phrases::Context::required_action</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="identifier-syntax">runtime_context_data</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||||
|
|
||||||
</pre>
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-rtn.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="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresscurrent">rls</li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-msr.html">msr</a></li><li class="progresssection"><a href="4-epv.html">epv</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progresschapter"><a href="5-nmn.html">5</a></li><li class="progressnext"><a href="4-es.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="4-rtn.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="progresscurrentchapter">4</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-i6i.html">i6i</a></li><li class="progresssection"><a href="4-lt.html">lt</a></li><li class="progresssection"><a href="4-jl.html">jl</a></li><li class="progresssection"><a href="4-tl.html">tl</a></li><li class="progresssection"><a href="4-ts.html">ts</a></li><li class="progresssection"><a href="4-rsp.html">rsp</a></li><li class="progresssection"><a href="4-ct.html">ct</a></li><li class="progresssection"><a href="4-cl.html">cl</a></li><li class="progresssection"><a href="4-rtn.html">rtn</a></li><li class="progresscurrent">rls</li><li class="progresssection"><a href="4-es.html">es</a></li><li class="progresssection"><a href="4-iti.html">iti</a></li><li class="progresssection"><a href="4-ts2.html">ts2</a></li><li class="progresssection"><a href="4-itc.html">itc</a></li><li class="progresssection"><a href="4-uoart.html">uoart</a></li><li class="progresssection"><a href="4-tv.html">tv</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-msr.html">msr</a></li><li class="progresssection"><a href="4-epv.html">epv</a></li><li class="progresssection"><a href="4-ins.html">ins</a></li><li class="progresssection"><a href="4-ic.html">ic</a></li><li class="progresssection"><a href="4-adj.html">adj</a></li><li class="progresssection"><a href="4-rsfk.html">rsfk</a></li><li class="progresssection"><a href="4-efart.html">efart</a></li><li class="progresssection"><a href="4-ni.html">ni</a></li><li class="progresssection"><a href="4-vart.html">vart</a></li><li class="progresssection"><a href="4-rart.html">rart</a></li><li class="progresssection"><a href="4-lpart.html">lpart</a></li><li class="progresssection"><a href="4-rsft.html">rsft</a></li><li class="progresschapter"><a href="5-nmn.html">5</a></li><li class="progressnext"><a href="4-es.html">❯</a></li></ul></div>
|
||||||
|
|
|
@ -81,7 +81,7 @@ already been set up, or not. Here's not:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">§3.1</a>, <a href="4-rls.html#SP5">§5</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a><br/>Showme Command - <a href="5-sc.html#SP2">§2</a><br/>Scenes - <a href="5-scn.html#SP2">§2</a>, <a href="5-scn.html#SP6">§6</a><br/>Actions - <a href="5-act.html#SP2">§2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">§1</a><br/>Command Grammars - <a href="5-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a>, <a href="5-cgl.html#SP8">§8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">§2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">§3.1</a>, <a href="4-rls.html#SP5">§5</a>, <a href="4-rls.html#SP7">§7</a>, <a href="4-rls.html#SP8_1_1">§8.1.1</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a><br/>Showme Command - <a href="5-sc.html#SP2">§2</a><br/>Scenes - <a href="5-scn.html#SP2">§2</a>, <a href="5-scn.html#SP6">§6</a><br/>Actions - <a href="5-act.html#SP2">§2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">§1</a><br/>Command Grammars - <a href="5-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a>, <a href="5-cgl.html#SP8">§8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">§2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</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-rtn.html#SP3" class="function-link"><span class="function-syntax">Routines::begin_framed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-rtn.html#SP3" class="function-link"><span class="function-syntax">Routines::begin_framed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
@ -140,7 +140,7 @@ did not.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::end</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">Routines::end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">§3.1</a>, <a href="4-rls.html#SP5">§5</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a><br/>Showme Command - <a href="5-sc.html#SP2">§2</a><br/>Scenes - <a href="5-scn.html#SP2">§2</a>, <a href="5-scn.html#SP6">§6</a><br/>Actions - <a href="5-act.html#SP2">§2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">§1</a><br/>Command Grammars - <a href="5-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a>, <a href="5-cgl.html#SP8">§8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">§2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::end</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">Routines::end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">§3.1</a>, <a href="4-rls.html#SP5">§5</a>, <a href="4-rls.html#SP7">§7</a>, <a href="4-rls.html#SP8_1_5">§8.1.5</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a><br/>Showme Command - <a href="5-sc.html#SP2">§2</a><br/>Scenes - <a href="5-scn.html#SP2">§2</a>, <a href="5-scn.html#SP6">§6</a><br/>Actions - <a href="5-act.html#SP2">§2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">§1</a><br/>Command Grammars - <a href="5-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a>, <a href="5-cgl.html#SP8">§8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">§2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::deduced_function_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">currently_compiling_in_frame</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">R_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::deduced_function_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">currently_compiling_in_frame</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kernel_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">public_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_compiling_iname</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kernel_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">public_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_compiling_iname</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -132,7 +132,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">an</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">an_base_iname</span><span 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="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">an_base_iname</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTActions::double_sharp</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">RTActions::double_sharp</span></span>:<br/><a href="5-act.html#SP2">§2</a>, <a href="5-act.html#SP4">§4</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP7">§7</a><br/>Action Patterns - <a href="5-ap.html#SP1">§1</a>, <a href="5-ap.html#SP7">§7</a></span></button><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">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTActions::double_sharp</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">RTActions::double_sharp</span></span>:<br/><a href="5-act.html#SP2">§2</a>, <a href="5-act.html#SP4">§4</a><br/>Rules - <a href="4-rls.html#SP8_1_2">§8.1.2</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP7">§7</a><br/>Action Patterns - <a href="5-ap.html#SP1">§1</a>, <a href="5-ap.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">an_iname</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">an</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">an_iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">an_iname</span><span class="plain-syntax"> =</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">an_iname</span><span class="plain-syntax"> =</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::derive_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DOUBLE_SHARP_NAME_HL</span><span class="plain-syntax">, </span><a href="5-act.html#SP1" class="function-link"><span class="function-syntax">RTActions::base_iname</span></a><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">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">an_package</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::derive_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DOUBLE_SHARP_NAME_HL</span><span class="plain-syntax">, </span><a href="5-act.html#SP1" class="function-link"><span class="function-syntax">RTActions::base_iname</span></a><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">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">an_package</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
Total memory consumption was 259199K = 253 MB
|
Total memory consumption was 259996K = 254 MB
|
||||||
|
|
||||||
62.6% was used for 1335884 objects, in 279117 frames in 203 x 800K = 162400K = 158 MB:
|
62.7% was used for 1336292 objects, in 279525 frames in 204 x 800K = 163200K = 159 MB:
|
||||||
|
|
||||||
9.7% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
9.7% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||||
5.4% text_stream_array 2583 x 100 = 258300 objects, 14547456 bytes
|
5.4% text_stream_array 2583 x 100 = 258300 objects, 14547456 bytes
|
||||||
3.9% parse_node 129406 objects, 10352480 bytes
|
3.8% parse_node 129406 objects, 10352480 bytes
|
||||||
2.7% verb_conjugation 160 objects, 7425280 bytes
|
2.7% verb_conjugation 160 objects, 7425280 bytes
|
||||||
2.5% parse_node_annotation_array 429 x 500 = 214500 objects, 6877728 bytes
|
2.5% parse_node_annotation_array 429 x 500 = 214500 objects, 6877728 bytes
|
||||||
2.5% linked_list 12262 objects, 6866720 bytes
|
2.5% linked_list 12263 objects, 6867280 bytes
|
||||||
2.3% inter_symbol_array 69 x 1024 = 70656 objects, 6219936 bytes
|
2.3% inter_symbol_array 69 x 1024 = 70656 objects, 6219936 bytes
|
||||||
1.2% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
|
1.2% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
|
||||||
1.1% map_data 670 objects, 3178480 bytes
|
1.1% map_data 670 objects, 3178480 bytes
|
||||||
|
@ -93,11 +93,12 @@ Total memory consumption was 259199K = 253 MB
|
||||||
---- parse_node_tree 20 objects, 17280 bytes
|
---- parse_node_tree 20 objects, 17280 bytes
|
||||||
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
|
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
|
||||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||||
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
|
||||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||||
|
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
||||||
---- to_phrase_request 59 objects, 15576 bytes
|
---- to_phrase_request 59 objects, 15576 bytes
|
||||||
---- method 323 objects, 15504 bytes
|
---- method 323 objects, 15504 bytes
|
||||||
---- adjective 137 objects, 14248 bytes
|
---- adjective 137 objects, 14248 bytes
|
||||||
|
---- booking_list 407 objects, 13024 bytes
|
||||||
---- literal_text 147 objects, 12936 bytes
|
---- literal_text 147 objects, 12936 bytes
|
||||||
---- adjective_iname_holder 320 objects, 12800 bytes
|
---- adjective_iname_holder 320 objects, 12800 bytes
|
||||||
---- stopwatch_timer 149 objects, 11920 bytes
|
---- stopwatch_timer 149 objects, 11920 bytes
|
||||||
|
@ -117,8 +118,8 @@ Total memory consumption was 259199K = 253 MB
|
||||||
---- parsing_pp_data 96 objects, 4608 bytes
|
---- parsing_pp_data 96 objects, 4608 bytes
|
||||||
---- build_vertex 40 objects, 4480 bytes
|
---- build_vertex 40 objects, 4480 bytes
|
||||||
---- hierarchy_attachment_point 48 objects, 4224 bytes
|
---- hierarchy_attachment_point 48 objects, 4224 bytes
|
||||||
---- placement_affecting_array 1 x 100 objects, 4032 bytes
|
|
||||||
---- stacked_variable_list_array 1 x 100 objects, 4032 bytes
|
---- stacked_variable_list_array 1 x 100 objects, 4032 bytes
|
||||||
|
---- placement_affecting_array 1 x 100 objects, 4032 bytes
|
||||||
---- activity 35 objects, 3920 bytes
|
---- activity 35 objects, 3920 bytes
|
||||||
---- inbuild_edition 54 objects, 3888 bytes
|
---- inbuild_edition 54 objects, 3888 bytes
|
||||||
---- inbuild_copy 35 objects, 3640 bytes
|
---- inbuild_copy 35 objects, 3640 bytes
|
||||||
|
@ -128,8 +129,8 @@ Total memory consumption was 259199K = 253 MB
|
||||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||||
---- instance_usage_array 1 x 200 objects, 3232 bytes
|
---- instance_usage_array 1 x 200 objects, 3232 bytes
|
||||||
---- method_set 100 objects, 3200 bytes
|
---- method_set 100 objects, 3200 bytes
|
||||||
---- compatibility_specification 66 objects, 3168 bytes
|
|
||||||
---- definition 44 objects, 3168 bytes
|
---- definition 44 objects, 3168 bytes
|
||||||
|
---- compatibility_specification 66 objects, 3168 bytes
|
||||||
---- inform_extension 19 objects, 3040 bytes
|
---- inform_extension 19 objects, 3040 bytes
|
||||||
---- property_of_value_storage 93 objects, 2976 bytes
|
---- property_of_value_storage 93 objects, 2976 bytes
|
||||||
---- either_or_property_data 62 objects, 2976 bytes
|
---- either_or_property_data 62 objects, 2976 bytes
|
||||||
|
@ -152,16 +153,16 @@ Total memory consumption was 259199K = 253 MB
|
||||||
---- pipeline_step 12 objects, 1440 bytes
|
---- pipeline_step 12 objects, 1440 bytes
|
||||||
---- noun_filter_token 22 objects, 1408 bytes
|
---- noun_filter_token 22 objects, 1408 bytes
|
||||||
---- special_meaning_holder 33 objects, 1320 bytes
|
---- special_meaning_holder 33 objects, 1320 bytes
|
||||||
---- constant_phrase 20 objects, 1280 bytes
|
|
||||||
---- build_script 40 objects, 1280 bytes
|
---- build_script 40 objects, 1280 bytes
|
||||||
|
---- constant_phrase 20 objects, 1280 bytes
|
||||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||||
---- direction_inference_data 30 objects, 1200 bytes
|
---- direction_inference_data 30 objects, 1200 bytes
|
||||||
---- hierarchy_metadatum 15 objects, 1200 bytes
|
---- hierarchy_metadatum 15 objects, 1200 bytes
|
||||||
---- quantifier 16 objects, 1024 bytes
|
---- quantifier 16 objects, 1024 bytes
|
||||||
---- table_column 16 objects, 896 bytes
|
---- table_column 16 objects, 896 bytes
|
||||||
---- inbuild_requirement 22 objects, 880 bytes
|
---- inbuild_requirement 22 objects, 880 bytes
|
||||||
---- control_structure_phrase 12 objects, 864 bytes
|
|
||||||
---- code_generation 1 object, 864 bytes
|
---- code_generation 1 object, 864 bytes
|
||||||
|
---- control_structure_phrase 12 objects, 864 bytes
|
||||||
---- cached_understanding 21 objects, 840 bytes
|
---- cached_understanding 21 objects, 840 bytes
|
||||||
---- runtime_kind_structure 13 objects, 832 bytes
|
---- runtime_kind_structure 13 objects, 832 bytes
|
||||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||||
|
@ -172,49 +173,49 @@ Total memory consumption was 259199K = 253 MB
|
||||||
---- submodule_identity 23 objects, 736 bytes
|
---- submodule_identity 23 objects, 736 bytes
|
||||||
---- rulebook_outcome 17 objects, 680 bytes
|
---- rulebook_outcome 17 objects, 680 bytes
|
||||||
---- inform_language 6 objects, 672 bytes
|
---- inform_language 6 objects, 672 bytes
|
||||||
---- relation_guard 5 objects, 640 bytes
|
|
||||||
---- inter_warehouse_room 10 objects, 640 bytes
|
|
||||||
---- I6T_intervention 8 objects, 640 bytes
|
---- I6T_intervention 8 objects, 640 bytes
|
||||||
|
---- inter_warehouse_room 10 objects, 640 bytes
|
||||||
|
---- relation_guard 5 objects, 640 bytes
|
||||||
---- nascent_array 7 objects, 616 bytes
|
---- nascent_array 7 objects, 616 bytes
|
||||||
---- inbuild_search_result 15 objects, 600 bytes
|
|
||||||
---- named_rulebook_outcome 15 objects, 600 bytes
|
---- named_rulebook_outcome 15 objects, 600 bytes
|
||||||
|
---- inbuild_search_result 15 objects, 600 bytes
|
||||||
---- label_namespace 10 objects, 560 bytes
|
---- label_namespace 10 objects, 560 bytes
|
||||||
---- small_word_set 11 objects, 528 bytes
|
---- small_word_set 11 objects, 528 bytes
|
||||||
---- implication 13 objects, 520 bytes
|
|
||||||
---- inform_kit 5 objects, 520 bytes
|
---- inform_kit 5 objects, 520 bytes
|
||||||
|
---- implication 13 objects, 520 bytes
|
||||||
---- inference_family 11 objects, 440 bytes
|
---- inference_family 11 objects, 440 bytes
|
||||||
---- equation 4 objects, 416 bytes
|
|
||||||
---- i6_memory_setting 13 objects, 416 bytes
|
---- i6_memory_setting 13 objects, 416 bytes
|
||||||
---- module_package 10 objects, 400 bytes
|
---- equation 4 objects, 416 bytes
|
||||||
---- dval_written 10 objects, 400 bytes
|
---- dval_written 10 objects, 400 bytes
|
||||||
---- bp_family 12 objects, 384 bytes
|
---- module_package 10 objects, 400 bytes
|
||||||
---- article_usage 8 objects, 384 bytes
|
---- article_usage 8 objects, 384 bytes
|
||||||
|
---- bp_family 12 objects, 384 bytes
|
||||||
---- source_file 5 objects, 360 bytes
|
---- source_file 5 objects, 360 bytes
|
||||||
---- inbuild_genre 7 objects, 336 bytes
|
---- inbuild_genre 7 objects, 336 bytes
|
||||||
---- door_dir_notice 5 objects, 320 bytes
|
|
||||||
---- pronoun 8 objects, 320 bytes
|
---- pronoun 8 objects, 320 bytes
|
||||||
|
---- door_dir_notice 5 objects, 320 bytes
|
||||||
---- grammatical_category 8 objects, 320 bytes
|
---- grammatical_category 8 objects, 320 bytes
|
||||||
---- up_family 9 objects, 288 bytes
|
---- up_family 9 objects, 288 bytes
|
||||||
---- build_step 4 objects, 288 bytes
|
---- build_step 4 objects, 288 bytes
|
||||||
---- explicit_bp_data 5 objects, 280 bytes
|
|
||||||
---- door_to_notice 5 objects, 280 bytes
|
---- door_to_notice 5 objects, 280 bytes
|
||||||
|
---- explicit_bp_data 5 objects, 280 bytes
|
||||||
---- inform_pipeline 4 objects, 256 bytes
|
---- inform_pipeline 4 objects, 256 bytes
|
||||||
---- verb_usage_tier 5 objects, 240 bytes
|
---- verb_usage_tier 5 objects, 240 bytes
|
||||||
---- adjective_meaning_family 7 objects, 224 bytes
|
---- adjective_meaning_family 7 objects, 224 bytes
|
||||||
---- release_instructions 1 object, 208 bytes
|
|
||||||
---- test_scenario 1 object, 208 bytes
|
---- test_scenario 1 object, 208 bytes
|
||||||
|
---- release_instructions 1 object, 208 bytes
|
||||||
---- build_skill 5 objects, 200 bytes
|
---- build_skill 5 objects, 200 bytes
|
||||||
---- compilation_unit 5 objects, 200 bytes
|
---- compilation_unit 5 objects, 200 bytes
|
||||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
|
||||||
---- kit_dependency 4 objects, 192 bytes
|
---- kit_dependency 4 objects, 192 bytes
|
||||||
|
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||||
---- inform_project 1 object, 176 bytes
|
---- inform_project 1 object, 176 bytes
|
||||||
---- link_instruction 4 objects, 160 bytes
|
---- link_instruction 4 objects, 160 bytes
|
||||||
---- code_generation_target 4 objects, 160 bytes
|
|
||||||
---- inference_subject_family 5 objects, 160 bytes
|
|
||||||
---- inter_architecture 4 objects, 160 bytes
|
---- inter_architecture 4 objects, 160 bytes
|
||||||
|
---- inference_subject_family 5 objects, 160 bytes
|
||||||
---- pointer_allocation 2 objects, 160 bytes
|
---- pointer_allocation 2 objects, 160 bytes
|
||||||
---- codegen_pipeline 1 object, 128 bytes
|
---- code_generation_target 4 objects, 160 bytes
|
||||||
---- element_activation 4 objects, 128 bytes
|
---- element_activation 4 objects, 128 bytes
|
||||||
|
---- codegen_pipeline 1 object, 128 bytes
|
||||||
---- inbuild_nest 3 objects, 120 bytes
|
---- inbuild_nest 3 objects, 120 bytes
|
||||||
---- inform_kit_ittt 2 objects, 96 bytes
|
---- inform_kit_ittt 2 objects, 96 bytes
|
||||||
---- compile_task_data 1 object, 80 bytes
|
---- compile_task_data 1 object, 80 bytes
|
||||||
|
@ -222,17 +223,17 @@ Total memory consumption was 259199K = 253 MB
|
||||||
---- list_together_routine 2 objects, 80 bytes
|
---- list_together_routine 2 objects, 80 bytes
|
||||||
---- build_methodology 1 object, 56 bytes
|
---- build_methodology 1 object, 56 bytes
|
||||||
---- inter_warehouse 1 object, 56 bytes
|
---- inter_warehouse 1 object, 56 bytes
|
||||||
---- figures_data 1 object, 48 bytes
|
|
||||||
---- star_invention 1 object, 48 bytes
|
---- star_invention 1 object, 48 bytes
|
||||||
|
---- figures_data 1 object, 48 bytes
|
||||||
---- HTML_file_state 1 object, 48 bytes
|
---- HTML_file_state 1 object, 48 bytes
|
||||||
---- parse_name_notice 1 object, 40 bytes
|
---- parse_name_notice 1 object, 40 bytes
|
||||||
---- kind_template_definition 1 object, 40 bytes
|
---- kind_template_definition 1 object, 40 bytes
|
||||||
---- by_routine_bp_data 1 object, 40 bytes
|
|
||||||
---- loop_over_scope 1 object, 40 bytes
|
---- loop_over_scope 1 object, 40 bytes
|
||||||
|
---- by_routine_bp_data 1 object, 40 bytes
|
||||||
|
|
||||||
37.3% was used for memory not allocated for objects:
|
37.2% was used for memory not allocated for objects:
|
||||||
|
|
||||||
15.8% text stream storage 42067444 bytes in 264527 claims
|
15.7% text stream storage 42064336 bytes in 264525 claims
|
||||||
3.4% dictionary storage 9278976 bytes in 16372 claims
|
3.4% dictionary storage 9278976 bytes in 16372 claims
|
||||||
---- sorting 1056 bytes in 3 claims
|
---- sorting 1056 bytes in 3 claims
|
||||||
2.7% source text 7200000 bytes in 3 claims
|
2.7% source text 7200000 bytes in 3 claims
|
||||||
|
@ -248,5 +249,5 @@ Total memory consumption was 259199K = 253 MB
|
||||||
---- emitter array storage 12320 bytes in 8 claims
|
---- emitter array storage 12320 bytes in 8 claims
|
||||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||||
|
|
||||||
20.3% was overhead - 53892520 bytes = 52629K = 51 MB
|
20.5% was overhead - 54698136 bytes = 53416K = 52 MB
|
||||||
|
|
||||||
|
|
|
@ -1,35 +1,36 @@
|
||||||
100.0% in inform7 run
|
100.0% in inform7 run
|
||||||
66.8% in compilation to Inter
|
67.0% in compilation to Inter
|
||||||
25.5% in //Phrases::Manager::compile_first_block//
|
25.7% in //Phrases::Manager::compile_first_block//
|
||||||
9.0% in //Phrases::Manager::compile_as_needed//
|
8.6% in //Phrases::Manager::compile_as_needed//
|
||||||
6.9% in //Strings::compile_responses//
|
7.2% in //Strings::compile_responses//
|
||||||
6.0% in //InferenceSubjects::emit_all//
|
6.1% in //InferenceSubjects::emit_all//
|
||||||
4.0% in //MajorNodes::pre_pass//
|
4.0% in //MajorNodes::pre_pass//
|
||||||
3.3% in //MajorNodes::pass_1//
|
3.3% in //MajorNodes::pass_1//
|
||||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
1.9% in //Phrases::Manager::RulePrintingRule_routine//
|
||||||
1.8% in //Phrases::Manager::rulebooks_array//
|
1.9% in //Phrases::Manager::rulebooks_array//
|
||||||
0.9% in //Phrases::Manager::traverse//
|
1.0% in //RTVerbs::ConjugateVerb//
|
||||||
0.9% in //RTVerbs::ConjugateVerb//
|
0.8% in //Phrases::Manager::traverse//
|
||||||
|
0.5% in //World::stage_V//
|
||||||
0.3% in //MajorNodes::pass_2//
|
0.3% in //MajorNodes::pass_2//
|
||||||
0.3% in //Phrases::Manager::compile_rulebooks//
|
0.3% in //Phrases::Manager::compile_rulebooks//
|
||||||
0.3% in //Phrases::Manager::parse_rule_parameters//
|
0.3% in //Phrases::Manager::parse_rule_parameters//
|
||||||
0.3% in //RTRelations::compile_defined_relations//
|
0.3% in //RTRelations::compile_defined_relations//
|
||||||
0.3% in //World::stage_V//
|
0.1% in //RTCommandGrammars::compile_all//
|
||||||
0.1% in //RTKinds::compile_data_type_support_routines//
|
0.1% in //RTKinds::compile_data_type_support_routines//
|
||||||
0.1% in //Task::make_built_in_kind_constructors//
|
0.1% in //Task::make_built_in_kind_constructors//
|
||||||
3.9% not specifically accounted for
|
0.1% in //World::stages_II_and_III//
|
||||||
30.7% in running Inter pipeline
|
3.4% not specifically accounted for
|
||||||
9.7% in step preparation
|
30.6% in running Inter pipeline
|
||||||
9.5% in inter step 2/12: link
|
10.0% in inter step 2/12: link
|
||||||
6.9% in inter step 12/12: generate inform6 -> auto.inf
|
9.5% in step preparation
|
||||||
|
7.0% in inter step 12/12: generate inform6 -> auto.inf
|
||||||
0.3% in inter step 9/12: make-identifiers-unique
|
0.3% in inter step 9/12: make-identifiers-unique
|
||||||
0.1% in inter step 10/12: reconcile-verbs
|
0.1% in inter step 10/12: reconcile-verbs
|
||||||
0.1% in inter step 11/12: eliminate-redundant-labels
|
0.1% in inter step 11/12: eliminate-redundant-labels
|
||||||
0.1% in inter step 4/12: parse-linked-matter
|
|
||||||
0.1% in inter step 5/12: resolve-conditional-compilation
|
0.1% in inter step 5/12: resolve-conditional-compilation
|
||||||
0.1% in inter step 6/12: assimilate
|
0.1% in inter step 6/12: assimilate
|
||||||
0.1% in inter step 7/12: resolve-external-symbols
|
0.1% in inter step 7/12: resolve-external-symbols
|
||||||
0.1% in inter step 8/12: inspect-plugs
|
0.1% in inter step 8/12: inspect-plugs
|
||||||
2.8% not specifically accounted for
|
2.6% not specifically accounted for
|
||||||
2.0% in supervisor
|
1.9% in supervisor
|
||||||
0.4% not specifically accounted for
|
0.4% not specifically accounted for
|
||||||
|
|
|
@ -329,7 +329,7 @@ void RulePlacement::place_in_rulebook(parse_node *p1, parse_node *p2, int sense)
|
||||||
if (any) @<Detach from all rulebooks@>;
|
if (any) @<Detach from all rulebooks@>;
|
||||||
if (sense == FALSE) @<Detach only from this rulebook@>;
|
if (sense == FALSE) @<Detach only from this rulebook@>;
|
||||||
|
|
||||||
booking *new_rule_booking = Rules::Bookings::new(given_rule);
|
booking *new_rule_booking = RuleBookings::new(given_rule);
|
||||||
Rules::set_kind_from(given_rule, given_rulebook);
|
Rules::set_kind_from(given_rule, given_rulebook);
|
||||||
if (relative_rule) {
|
if (relative_rule) {
|
||||||
LOGIF(RULE_ATTACHMENTS, "Relative to which = %W\n", relative_rule->name);
|
LOGIF(RULE_ATTACHMENTS, "Relative to which = %W\n", relative_rule->name);
|
||||||
|
|
|
@ -89,6 +89,7 @@ DECLARE_CLASS(text_substitution)
|
||||||
@e activity_list_CLASS
|
@e activity_list_CLASS
|
||||||
@e applicability_constraint_CLASS
|
@e applicability_constraint_CLASS
|
||||||
@e booking_CLASS
|
@e booking_CLASS
|
||||||
|
@e booking_list_CLASS
|
||||||
@e comparative_bp_data_CLASS
|
@e comparative_bp_data_CLASS
|
||||||
@e condition_of_subject_CLASS
|
@e condition_of_subject_CLASS
|
||||||
@e counting_data_CLASS
|
@e counting_data_CLASS
|
||||||
|
@ -121,6 +122,7 @@ DECLARE_CLASS_ALLOCATED_IN_ARRAYS(activity_crossref, 100)
|
||||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(activity_list, 1000)
|
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(activity_list, 1000)
|
||||||
DECLARE_CLASS(applicability_constraint)
|
DECLARE_CLASS(applicability_constraint)
|
||||||
DECLARE_CLASS(booking)
|
DECLARE_CLASS(booking)
|
||||||
|
DECLARE_CLASS(booking_list)
|
||||||
DECLARE_CLASS(comparative_bp_data)
|
DECLARE_CLASS(comparative_bp_data)
|
||||||
DECLARE_CLASS(condition_of_subject)
|
DECLARE_CLASS(condition_of_subject)
|
||||||
DECLARE_CLASS(counting_data)
|
DECLARE_CLASS(counting_data)
|
||||||
|
|
|
@ -422,6 +422,22 @@ int PluginCalls::set_subkind_notify(kind *sub, kind *super) {
|
||||||
PLUGINS_CALL(SET_SUBKIND_NOTIFY_PLUG, sub, super);
|
PLUGINS_CALL(SET_SUBKIND_NOTIFY_PLUG, sub, super);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@h Influencing the imperative plugin.
|
||||||
|
Called from //imperative: Rule Bookings// to give plugins a chance to move
|
||||||
|
automatically placed rules from one rulebook to another. The actions plugin
|
||||||
|
uses this to break up what would otherwise be unwieldy before and after
|
||||||
|
rulebooks into smaller ones for each action.
|
||||||
|
|
||||||
|
If making a diversion, the plugin should write the new rulebook into |new_owner|
|
||||||
|
and return |TRUE|; and otherwise |FALSE|.
|
||||||
|
|
||||||
|
@e DIVERT_RULE_PLUG
|
||||||
|
|
||||||
|
=
|
||||||
|
int PluginCalls::divert_rule(rule *R, rulebook *original_owner, rulebook **new_owner) {
|
||||||
|
PLUGINS_CALL(DIVERT_RULE_PLUG, R, original_owner, new_owner);
|
||||||
|
}
|
||||||
|
|
||||||
@h Influencing the actions plugin.
|
@h Influencing the actions plugin.
|
||||||
We now have a whole run of functions called only by the actions plugin, and
|
We now have a whole run of functions called only by the actions plugin, and
|
||||||
therefore only when it is active.
|
therefore only when it is active.
|
||||||
|
|
|
@ -41,6 +41,7 @@ void ActionsPlugin::start(void) {
|
||||||
PluginManager::plug(OFFERED_PROPERTY_PLUG, ActionVariables::actions_offered_property);
|
PluginManager::plug(OFFERED_PROPERTY_PLUG, ActionVariables::actions_offered_property);
|
||||||
PluginManager::plug(OFFERED_SPECIFICATION_PLUG, ActionsPlugin::actions_offered_specification);
|
PluginManager::plug(OFFERED_SPECIFICATION_PLUG, ActionsPlugin::actions_offered_specification);
|
||||||
PluginManager::plug(TYPECHECK_EQUALITY_PLUG, ARvalues::actions_typecheck_equality);
|
PluginManager::plug(TYPECHECK_EQUALITY_PLUG, ARvalues::actions_typecheck_equality);
|
||||||
|
PluginManager::plug(DIVERT_RULE_PLUG, Actions::divert_rule);
|
||||||
PluginManager::plug(PRODUCTION_LINE_PLUG, ActionsPlugin::production_line);
|
PluginManager::plug(PRODUCTION_LINE_PLUG, ActionsPlugin::production_line);
|
||||||
PluginManager::plug(COMPLETE_MODEL_PLUG, ActionsPlugin::complete_model);
|
PluginManager::plug(COMPLETE_MODEL_PLUG, ActionsPlugin::complete_model);
|
||||||
|
|
||||||
|
|
|
@ -81,9 +81,9 @@ a given action:
|
||||||
|
|
||||||
=
|
=
|
||||||
rulebook *Actions::fragment_rulebook(action_name *an, rulebook *rb) {
|
rulebook *Actions::fragment_rulebook(action_name *an, rulebook *rb) {
|
||||||
if (rb == built_in_rulebooks[CHECK_RB]) return an->check_rules;
|
if (rb == built_in_rulebooks[CHECK_RB]) return an->check_rules;
|
||||||
if (rb == built_in_rulebooks[CARRY_OUT_RB]) return an->carry_out_rules;
|
if (rb == built_in_rulebooks[CARRY_OUT_RB]) return an->carry_out_rules;
|
||||||
if (rb == built_in_rulebooks[REPORT_RB]) return an->report_rules;
|
if (rb == built_in_rulebooks[REPORT_RB]) return an->report_rules;
|
||||||
internal_error("asked for peculiar fragmented rulebook"); return NULL;
|
internal_error("asked for peculiar fragmented rulebook"); return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,14 +92,75 @@ rulebook *Actions::divert_to_another_actions_rulebook(action_name *new_an,
|
||||||
if (new_an) {
|
if (new_an) {
|
||||||
action_name *old_an;
|
action_name *old_an;
|
||||||
LOOP_OVER(old_an, action_name) {
|
LOOP_OVER(old_an, action_name) {
|
||||||
if (old_rulebook == old_an->check_rules) return new_an->check_rules;
|
if (old_rulebook == old_an->check_rules) return new_an->check_rules;
|
||||||
if (old_rulebook == old_an->carry_out_rules) return new_an->carry_out_rules;
|
if (old_rulebook == old_an->carry_out_rules) return new_an->carry_out_rules;
|
||||||
if (old_rulebook == old_an->report_rules) return new_an->report_rules;
|
if (old_rulebook == old_an->report_rules) return new_an->report_rules;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return old_rulebook;
|
return old_rulebook;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ And this is where the actions plugin moves rules from their normal rulebooks:
|
||||||
|
|
||||||
|
=
|
||||||
|
int Actions::divert_rule(rule *R, rulebook *original_owner, rulebook **new_owner) {
|
||||||
|
phrase *ph = Rules::get_defn_as_phrase(R); if (ph == NULL) return FALSE;
|
||||||
|
if (Rulebooks::requires_specific_action(original_owner)) {
|
||||||
|
int waiver = FALSE;
|
||||||
|
action_name *an = NULL;
|
||||||
|
wording PW = Phrases::Usage::get_prewhile_text(&(ph->usage_data));
|
||||||
|
if (Wordings::nonempty(PW)) {
|
||||||
|
LOOP_THROUGH_WORDING(i, PW)
|
||||||
|
if (NamedActionPatterns::by_name(Wordings::from(PW, i)))
|
||||||
|
@<Issue PM_MultipleCCR@>;
|
||||||
|
int anyone = FALSE;
|
||||||
|
action_name_list *list = ParseActionPatterns::list_of_actions_only(PW, &anyone);
|
||||||
|
LOGIF(RULE_ATTACHMENTS, "Looking at '%W' (anyone flag %d):\n$L\n",
|
||||||
|
PW, anyone, list);
|
||||||
|
an = ActionNameLists::get_best_action(list);
|
||||||
|
LOGIF(RULE_ATTACHMENTS, "Best action is $l\n", an);
|
||||||
|
Rules::set_marked_for_anyone(R, anyone);
|
||||||
|
} else {
|
||||||
|
waiver = TRUE;
|
||||||
|
if (original_owner == built_in_rulebooks[CHECK_RB]) waiver = FALSE;
|
||||||
|
if (original_owner == built_in_rulebooks[CARRY_OUT_RB]) waiver = FALSE;
|
||||||
|
if (original_owner == built_in_rulebooks[REPORT_RB]) waiver = FALSE;
|
||||||
|
}
|
||||||
|
if ((an == NULL) && (waiver == FALSE))
|
||||||
|
an = ActionNameNames::longest_nounless(PW, IS_TENSE, NULL);
|
||||||
|
if ((an == NULL) && (waiver == FALSE)) @<Issue PM_MultipleCCR@>;
|
||||||
|
if (original_owner == built_in_rulebooks[CHECK_RB]) {
|
||||||
|
*new_owner = Actions::fragment_rulebook(an, built_in_rulebooks[CHECK_RB]);
|
||||||
|
return TRUE;
|
||||||
|
} else if (original_owner == built_in_rulebooks[CARRY_OUT_RB]) {
|
||||||
|
*new_owner = Actions::fragment_rulebook(an, built_in_rulebooks[CARRY_OUT_RB]);
|
||||||
|
return TRUE;
|
||||||
|
} else if (original_owner == built_in_rulebooks[REPORT_RB]) {
|
||||||
|
*new_owner = Actions::fragment_rulebook(an, built_in_rulebooks[REPORT_RB]);
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
*new_owner = Actions::divert_to_another_actions_rulebook(an, original_owner);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@<Issue PM_MultipleCCR@> =
|
||||||
|
Problems::quote_source(1, current_sentence);
|
||||||
|
Problems::quote_wording(2, PW);
|
||||||
|
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_MultipleCCR));
|
||||||
|
Problems::issue_problem_segment(
|
||||||
|
"You wrote %1, but the situation this refers to ('%2') is not a single "
|
||||||
|
"action. Rules in the form of 'check', 'carry out' and 'report' are "
|
||||||
|
"tied to specific actions, and must give a single explicit action name - "
|
||||||
|
"even if they then go on to very complicated conditions about any nouns "
|
||||||
|
"also involved. So 'Check taking something: ...' is fine, but not 'Check "
|
||||||
|
"taking or dropping something: ...' or 'Check doing something: ...' - "
|
||||||
|
"the former names two actions, the latter none.");
|
||||||
|
Problems::issue_problem_end();
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
@ The //Parsing Plugin// attaches command grammar to an action, but that's not
|
@ The //Parsing Plugin// attaches command grammar to an action, but that's not
|
||||||
our concern here:
|
our concern here:
|
||||||
|
|
||||||
|
|
336
inform7/imperative-module/Chapter 2/Booking Lists.w
Normal file
336
inform7/imperative-module/Chapter 2/Booking Lists.w
Normal file
|
@ -0,0 +1,336 @@
|
||||||
|
[BookingLists::] Booking Lists.
|
||||||
|
|
||||||
|
Booking lists are linked lists of rule bookings.
|
||||||
|
|
||||||
|
@h Introduction.
|
||||||
|
Bookings are intended to be bound together in linked lists, each of which
|
||||||
|
represents the interior pages of a single rulebook.
|
||||||
|
|
||||||
|
=
|
||||||
|
typedef struct booking_list {
|
||||||
|
struct booking *list_head; /* the dummy entry at the front */
|
||||||
|
CLASS_DEFINITION
|
||||||
|
} booking_list;
|
||||||
|
|
||||||
|
@ There are only three operations on lists: creation, addition of a booking,
|
||||||
|
and removal of a booking. The following invariants are preserved:
|
||||||
|
|
||||||
|
(a) The list head is a dummy, i.e., meaningless, booking which has never been
|
||||||
|
the subject of any addition operation and has never moved.
|
||||||
|
|
||||||
|
(b) The only |FIRST_PLACEMENT| entries in the list immediately follow the list
|
||||||
|
head. Those which were added explicitly as first-placed are in reverse order
|
||||||
|
of addition to the list.
|
||||||
|
|
||||||
|
(c) The only |LAST_PLACEMENT| entries in the list are at the end. Those which
|
||||||
|
were added explicitly as last-placed are in order of addition to the list.
|
||||||
|
|
||||||
|
(d) If R and S are middle-placed rules which were placed in the list within
|
||||||
|
the same range (say, both anywhere, or both "after T" or "before U") and R
|
||||||
|
precedes S, then either R is more specific than S, or they are equally specific
|
||||||
|
and R was added to the list before S.
|
||||||
|
|
||||||
|
(e) The list never contains duplicates, that is, never contains two bookings
|
||||||
|
whose rules are equal, in the sense of //Rules::eq//.
|
||||||
|
|
||||||
|
@ These macros are useful for iterating through the contents in sequence;
|
||||||
|
note that |br| is never equal to the dummy head, and that |pr| is never |NULL| --
|
||||||
|
though it is initially equal to the dummy, which of course is the point of
|
||||||
|
having the dummy.
|
||||||
|
|
||||||
|
@d LOOP_OVER_BOOKINGS(br, L)
|
||||||
|
for (booking *br=(L)?(L->list_head->next_booking):NULL; br; br=br->next_booking)
|
||||||
|
@d LOOP_OVER_BOOKINGS_WITH_PREV(br, pr, L)
|
||||||
|
for (booking *br = L->list_head->next_booking, *pr = L->list_head; br;
|
||||||
|
pr = br, br = br->next_booking)
|
||||||
|
|
||||||
|
=
|
||||||
|
void BookingLists::log(booking_list *L) {
|
||||||
|
if (L == NULL) { LOG("<null-booked-rule-list>\n"); return; }
|
||||||
|
int t = BookingLists::length(L);
|
||||||
|
if (t == 0) { LOG("<empty-booked-rule-list>\n"); return; }
|
||||||
|
int s = 1;
|
||||||
|
LOOP_OVER_BOOKINGS(br, L)
|
||||||
|
LOG(" %d/%d. $b\n", s++, t, br);
|
||||||
|
}
|
||||||
|
|
||||||
|
@h Creation.
|
||||||
|
A new list is a dummy header (see (a) above):
|
||||||
|
|
||||||
|
=
|
||||||
|
booking_list *BookingLists::new(void) {
|
||||||
|
booking_list *L = CREATE(booking_list);
|
||||||
|
L->list_head = RuleBookings::new(NULL);
|
||||||
|
return L;
|
||||||
|
}
|
||||||
|
|
||||||
|
@h Addition.
|
||||||
|
The following is called when a booking |br| for the rule R needs to be placed
|
||||||
|
into list |L|, which is the contents of a rulebook we will call B. This happens,
|
||||||
|
for example, in response to an an assertion like "R is listed after S in B";
|
||||||
|
in that cast the |side| would be |AFTER_SIDE|, and the |ref_rule| would be S.
|
||||||
|
|
||||||
|
It is also possible to specify a |placing|. For example, for a rule described
|
||||||
|
as "First every turn rule: ...", this would be added to the every turn rulebook
|
||||||
|
with placing |FIRST_PLACEMENT|. There are three possible placings: see //booking//
|
||||||
|
for what they are.
|
||||||
|
|
||||||
|
And since there are four possible sides, the following function effectively has
|
||||||
|
12 different modes to get right.
|
||||||
|
|
||||||
|
Each "addition" leaves the list either the same size or longer by 1.
|
||||||
|
|
||||||
|
@d BEFORE_SIDE -1 /* before the reference rule */
|
||||||
|
@d IN_SIDE 0 /* if no mention is made of where to put the new booking */
|
||||||
|
@d AFTER_SIDE 1 /* after the reference rule */
|
||||||
|
@d INSTEAD_SIDE 2 /* in place of the reference rule */
|
||||||
|
|
||||||
|
=
|
||||||
|
void BookingLists::add(booking_list *L, booking *new_br,
|
||||||
|
int placing, int side, rule *ref_rule) {
|
||||||
|
@<Make some sanity checks on the addition instructions@>;
|
||||||
|
@<Handle the case where the new rule is already in the list@>;
|
||||||
|
@<Handle all placements made with the INSTEAD side@>;
|
||||||
|
@<Handle all placements made with the FIRST placement@>;
|
||||||
|
@<Handle all placements made with the LAST placement@>;
|
||||||
|
@<Handle what's left: MIDDLE placements on the IN, BEFORE or AFTER sides@>;
|
||||||
|
}
|
||||||
|
|
||||||
|
@<Make some sanity checks on the addition instructions@> =
|
||||||
|
if ((side != IN_SIDE) && (ref_rule == NULL))
|
||||||
|
internal_error("tried to add before or after or instead of non-rule");
|
||||||
|
if ((side == IN_SIDE) && (ref_rule != NULL))
|
||||||
|
internal_error("tried to add in middle but with ref rule");
|
||||||
|
if ((side != IN_SIDE) && (placing != MIDDLE_PLACEMENT))
|
||||||
|
internal_error("tried to add before or after but with non-middle placement");
|
||||||
|
if (L == NULL)
|
||||||
|
internal_error("tried to add rule to null list");
|
||||||
|
switch(placing) {
|
||||||
|
case MIDDLE_PLACEMENT: break;
|
||||||
|
case FIRST_PLACEMENT: LOGIF(RULE_ATTACHMENTS, "Placed first\n"); break;
|
||||||
|
case LAST_PLACEMENT: LOGIF(RULE_ATTACHMENTS, "Placed last\n"); break;
|
||||||
|
default: internal_error("invalid placing of rule");
|
||||||
|
}
|
||||||
|
|
||||||
|
@ If R is already in B, the assertion may still have an effect.
|
||||||
|
|
||||||
|
If our instructions specify no particular position for R to take, we return
|
||||||
|
because nothing need be done: the rule's there already, so be happy. Otherwise,
|
||||||
|
we remove R's existing booking in order that it can be rebooked in a new position.
|
||||||
|
|
||||||
|
This is a change in semantics from the original Inform 7 design for rulebooks,
|
||||||
|
under which a rule could be booked multiple times in the same rulebook -- which
|
||||||
|
was then called "duplication". Following debate on the Usenet newsgroup
|
||||||
|
|rec.arts.int-fiction| in February and March 2009, it was decided to abolish
|
||||||
|
duplication in favour of the clean principle that a rule can only be in a
|
||||||
|
single rulebook once. This makes it easier to place rules with tricky preambles,
|
||||||
|
though there were arguments on both sides.
|
||||||
|
|
||||||
|
@<Handle the case where the new rule is already in the list@> =
|
||||||
|
LOOP_OVER_BOOKINGS_WITH_PREV(pos, prev, L)
|
||||||
|
if (Rules::eq(RuleBookings::get_rule(pos), RuleBookings::get_rule(new_br))) {
|
||||||
|
if ((side == IN_SIDE) && (placing == MIDDLE_PLACEMENT)) return;
|
||||||
|
prev->next_booking = pos->next_booking;
|
||||||
|
pos->next_booking = NULL;
|
||||||
|
LOGIF(RULE_ATTACHMENTS, "Removing previous entry from rulebook\n");
|
||||||
|
break; /* rule can only appear once, so no need to keep checking */
|
||||||
|
}
|
||||||
|
|
||||||
|
@<Handle all placements made with the INSTEAD side@> =
|
||||||
|
if (side == INSTEAD_SIDE) {
|
||||||
|
LOOP_OVER_BOOKINGS_WITH_PREV(pos, prev, L)
|
||||||
|
if (Rules::eq(RuleBookings::get_rule(pos), ref_rule)) {
|
||||||
|
new_br->placement = pos->placement; /* replace with same placement */
|
||||||
|
new_br->next_booking = pos->next_booking;
|
||||||
|
prev->next_booking = new_br;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ If we insert a rule as first-placed rule when there already is a first-placed
|
||||||
|
rule, the new one displaces it to go first, but both continue to be labelled as
|
||||||
|
having |FIRST_PLACEMENT|, so that subsequent rule insertions of middle-placed rules
|
||||||
|
will still go after both of them.
|
||||||
|
|
||||||
|
@<Handle all placements made with the FIRST placement@> =
|
||||||
|
if (placing == FIRST_PLACEMENT) { /* first in valid interval (must be whole list) */
|
||||||
|
booking *previously_first = L->list_head->next_booking;
|
||||||
|
L->list_head->next_booking = new_br;
|
||||||
|
new_br->next_booking = previously_first; /* pushes any existing first rule forward */
|
||||||
|
new_br->placement = placing;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ Symmetrically, a second last-placed rule is inserted after any existing one, but
|
||||||
|
both are labelled as having |LAST_PLACEMENT|.
|
||||||
|
|
||||||
|
@<Handle all placements made with the LAST placement@> =
|
||||||
|
if (placing == LAST_PLACEMENT) { /* last in valid interval (must be whole list) */
|
||||||
|
booking *prev = L->list_head;
|
||||||
|
while (prev->next_booking != NULL) prev = prev->next_booking;
|
||||||
|
prev->next_booking = new_br; /* pushes any existing last rule backward */
|
||||||
|
new_br->next_booking = NULL;
|
||||||
|
new_br->placement = placing;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
@<Handle what's left: MIDDLE placements on the IN, BEFORE or AFTER sides@> =
|
||||||
|
booking *start_rule = L->list_head; /* valid interval begins after this rule */
|
||||||
|
booking *end_rule = NULL; /* valid interval ends before this rule, or runs to end if |NULL| */
|
||||||
|
@<Adjust the valid interval to take care of BEFORE and AFTER side requirements@>;
|
||||||
|
@<Check that the valid interval is indeed as advertised@>;
|
||||||
|
booking *insert_after = start_rule; /* insertion point is after this */
|
||||||
|
@<Find insertion point, keeping the valid interval in specificity order@>;
|
||||||
|
booking *subseq = insert_after->next_booking;
|
||||||
|
insert_after->next_booking = new_br;
|
||||||
|
new_br->next_booking = subseq;
|
||||||
|
@<Set the placement for the new rule booking@>;
|
||||||
|
|
||||||
|
@<Adjust the valid interval to take care of BEFORE and AFTER side requirements@> =
|
||||||
|
switch(side) {
|
||||||
|
case BEFORE_SIDE:
|
||||||
|
LOOP_OVER_BOOKINGS(pos, L)
|
||||||
|
if (Rules::eq(RuleBookings::get_rule(pos), ref_rule))
|
||||||
|
end_rule = pos; /* insert before: so valid interval ends here */
|
||||||
|
if (end_rule == NULL) internal_error("can't find end rule");
|
||||||
|
break;
|
||||||
|
case AFTER_SIDE:
|
||||||
|
LOOP_OVER_BOOKINGS(pos, L)
|
||||||
|
if (Rules::eq(RuleBookings::get_rule(pos), ref_rule))
|
||||||
|
start_rule = pos; /* insert after: so valid interval begins here */
|
||||||
|
if (start_rule == L->list_head) internal_error("can't find start rule");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
@<Check that the valid interval is indeed as advertised@> =
|
||||||
|
int i = 0, t = 2;
|
||||||
|
if (end_rule == NULL) t = 1;
|
||||||
|
booking *pos;
|
||||||
|
for (pos = L->list_head; pos; pos = pos->next_booking) {
|
||||||
|
if ((pos == start_rule) && (i == 0)) i = 1;
|
||||||
|
if ((pos == end_rule) && (i == 1)) i = 2;
|
||||||
|
}
|
||||||
|
if (i != t) internal_error("valid rule interval isn't");
|
||||||
|
|
||||||
|
@<Find insertion point, keeping the valid interval in specificity order@> =
|
||||||
|
int log = FALSE; if (Log::aspect_switched_on(SPECIFICITIES_DA)) log = TRUE;
|
||||||
|
|
||||||
|
/* move forward to final valid first rule (if any exist) */
|
||||||
|
while ((insert_after->next_booking != end_rule)
|
||||||
|
&& (insert_after->next_booking->placement == FIRST_PLACEMENT))
|
||||||
|
insert_after = insert_after->next_booking;
|
||||||
|
|
||||||
|
/* move forward past other middle rules if they are not less specific */
|
||||||
|
while ((insert_after->next_booking != end_rule) /* stop before $p$ leaves valid range */
|
||||||
|
&& (insert_after->next_booking->placement != LAST_PLACEMENT) /* or reaches a last rule */
|
||||||
|
&& (RuleBookings::cmp(insert_after->next_booking, new_br,
|
||||||
|
log) >= 0)) /* or a rule less specific than the new one */
|
||||||
|
insert_after = insert_after->next_booking;
|
||||||
|
|
||||||
|
@ Since this part of the algorithm is used only when we've requested MIDDLE
|
||||||
|
placement, it might seem that |new_br->placement| should always be set to
|
||||||
|
that. This does indeed mostly happen, but not always. To preserve rulebook
|
||||||
|
invariants (b) and (c), we need to force anything added after a LAST rule
|
||||||
|
to be LAST as well, and similarly for FIRSTs. (This will only happen in
|
||||||
|
cases where the source text called for placements AFTER a LAST rule, or
|
||||||
|
BEFORE a FIRST one.)
|
||||||
|
|
||||||
|
@<Set the placement for the new rule booking@> =
|
||||||
|
new_br->placement = MIDDLE_PLACEMENT;
|
||||||
|
if ((insert_after != L->list_head) &&
|
||||||
|
(insert_after->placement == LAST_PLACEMENT))
|
||||||
|
new_br->placement =
|
||||||
|
LAST_PLACEMENT; /* happens if valid interval is after a last rule */
|
||||||
|
|
||||||
|
if ((subseq) &&
|
||||||
|
(subseq->placement == FIRST_PLACEMENT))
|
||||||
|
new_br->placement =
|
||||||
|
FIRST_PLACEMENT; /* happens if valid interval is before a first rule */
|
||||||
|
|
||||||
|
@h Removal.
|
||||||
|
This is much simpler, since it doesn't disturb the ordering:
|
||||||
|
|
||||||
|
=
|
||||||
|
void BookingLists::remove(booking_list *L, rule *R) {
|
||||||
|
LOOP_OVER_BOOKINGS_WITH_PREV(br, pr, L)
|
||||||
|
if (Rules::eq(RuleBookings::get_rule(br), R)) {
|
||||||
|
pr->next_booking = br->next_booking;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@h Scanning lists for their contents.
|
||||||
|
|
||||||
|
=
|
||||||
|
int BookingLists::length(booking_list *L) {
|
||||||
|
int n = 0;
|
||||||
|
LOOP_OVER_BOOKINGS(br, L) n++;
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BookingLists::is_contextually_empty(booking_list *L, rule_context rc) {
|
||||||
|
LOOP_OVER_BOOKINGS(br, L) {
|
||||||
|
phrase *ph = Rules::get_defn_as_phrase(RuleBookings::get_rule(br));
|
||||||
|
if (Rulebooks::phrase_fits_rule_context(ph, rc)) return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
booking *BookingLists::first(booking_list *L) {
|
||||||
|
LOOP_OVER_BOOKINGS(br, L) return br;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BookingLists::is_empty_of_i7_rules(booking_list *L) {
|
||||||
|
LOOP_OVER_BOOKINGS(br, L)
|
||||||
|
if (Rules::get_defn_as_phrase(RuleBookings::get_rule(br)))
|
||||||
|
return FALSE;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BookingLists::contains(booking_list *L, rule *to_find) {
|
||||||
|
LOOP_OVER_BOOKINGS(br, L)
|
||||||
|
if (Rules::eq(RuleBookings::get_rule(br), to_find))
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int BookingLists::contains_ph(booking_list *L, phrase *ph_to_find) {
|
||||||
|
LOOP_OVER_BOOKINGS(br, L)
|
||||||
|
if (Rules::get_defn_as_phrase(RuleBookings::get_rule(br)) == ph_to_find)
|
||||||
|
return TRUE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@h Compilation of rule definitions for rulebook.
|
||||||
|
There's no real need to do so, but we compile rule definitions in rulebook
|
||||||
|
order to make the compiled code more legible, and for the same reason we add
|
||||||
|
plenty of commentary.
|
||||||
|
|
||||||
|
=
|
||||||
|
void BookingLists::compile(booking_list *L, int *i, int max_i) {
|
||||||
|
int t = BookingLists::length(L);
|
||||||
|
int s = 0;
|
||||||
|
LOOP_OVER_BOOKINGS(br, L) {
|
||||||
|
s++;
|
||||||
|
RTRules::compile_comment(RuleBookings::get_rule(br), s, t);
|
||||||
|
if (br->next_booking) {
|
||||||
|
TEMPORARY_TEXT(C)
|
||||||
|
if (br->placement != br->next_booking->placement) {
|
||||||
|
WRITE_TO(C, "--- now the ");
|
||||||
|
switch(br->next_booking->placement) {
|
||||||
|
case FIRST_PLACEMENT: WRITE_TO(C, "first-placed rules"); break;
|
||||||
|
case MIDDLE_PLACEMENT: WRITE_TO(C, "mid-placed rules"); break;
|
||||||
|
case LAST_PLACEMENT: WRITE_TO(C, "last-placed rules"); break;
|
||||||
|
}
|
||||||
|
WRITE_TO(C, " ---");
|
||||||
|
Produce::comment(Emit::tree(), C);
|
||||||
|
} else {
|
||||||
|
RuleBookings::comment(C, br);
|
||||||
|
if (Str::len(C) > 0) Produce::comment(Emit::tree(), C);
|
||||||
|
}
|
||||||
|
DISCARD_TEXT(C)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (t > 0) CompiledText::divider_comment();
|
||||||
|
}
|
|
@ -314,7 +314,7 @@ rulebook_outcome *Rulebooks::Outcomes::rbo_from_context(named_rulebook_outcome *
|
||||||
rulebook_outcome *ro;
|
rulebook_outcome *ro;
|
||||||
for (ro = outs->named_outcomes; ro; ro = ro->next) {
|
for (ro = outs->named_outcomes; ro; ro = ro->next) {
|
||||||
if (ro->outcome_name == rbno) {
|
if (ro->outcome_name == rbno) {
|
||||||
if (Rules::Bookings::list_contains_ph(Rulebooks::first_booking(rb), ph))
|
if (BookingLists::contains_ph(rb->rule_list, ph))
|
||||||
return ro;
|
return ro;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -329,7 +329,7 @@ rulebook *Rulebooks::Outcomes::allow_outcome(named_rulebook_outcome *rbno) {
|
||||||
rulebook *rb;
|
rulebook *rb;
|
||||||
LOOP_OVER(rb, rulebook) {
|
LOOP_OVER(rb, rulebook) {
|
||||||
outcomes *outs = Rulebooks::get_outcomes(rb);
|
outcomes *outs = Rulebooks::get_outcomes(rb);
|
||||||
if (Rules::Bookings::list_contains_ph(Rulebooks::first_booking(rb), ph)) {
|
if (BookingLists::contains_ph(rb->rule_list, ph)) {
|
||||||
int okay = FALSE;
|
int okay = FALSE;
|
||||||
rulebook_outcome *ro;
|
rulebook_outcome *ro;
|
||||||
for (ro = outs->named_outcomes; ro; ro = ro->next)
|
for (ro = outs->named_outcomes; ro; ro = ro->next)
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -49,7 +49,7 @@ typedef struct rulebook {
|
||||||
int runs_during_activities; /* allow "while..." clauses to name these */
|
int runs_during_activities; /* allow "while..." clauses to name these */
|
||||||
int used_by_future_action_activity; /* like "deciding the scope of something..." */
|
int used_by_future_action_activity; /* like "deciding the scope of something..." */
|
||||||
|
|
||||||
struct booking *rule_list; /* linked list of booked rules */
|
struct booking_list *rule_list; /* linked list of booked rules */
|
||||||
|
|
||||||
struct placement_affecting *placement_list; /* linked list of explicit placements */
|
struct placement_affecting *placement_list; /* linked list of explicit placements */
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ rulebook *Rulebooks::new(kind *create_as, wording W, package_request *R) {
|
||||||
rb->rb_package = R;
|
rb->rb_package = R;
|
||||||
rb->rb_iname = Hierarchy::make_iname_in(RUN_FN_HL, rb->rb_package);
|
rb->rb_iname = Hierarchy::make_iname_in(RUN_FN_HL, rb->rb_package);
|
||||||
|
|
||||||
rb->rule_list = Rules::Bookings::list_new();
|
rb->rule_list = BookingLists::new();
|
||||||
|
|
||||||
rb->automatically_generated = FALSE;
|
rb->automatically_generated = FALSE;
|
||||||
rb->used_by_future_action_activity = FALSE;
|
rb->used_by_future_action_activity = FALSE;
|
||||||
|
@ -359,22 +359,22 @@ int Rulebooks::used_by_future_actions(rulebook *rb) {
|
||||||
|
|
||||||
int Rulebooks::is_empty(rulebook *rb, rule_context rc) {
|
int Rulebooks::is_empty(rulebook *rb, rule_context rc) {
|
||||||
if (rb == NULL) return TRUE;
|
if (rb == NULL) return TRUE;
|
||||||
return Rules::Bookings::list_is_empty(rb->rule_list, rc);
|
return BookingLists::is_contextually_empty(rb->rule_list, rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Rulebooks::no_rules(rulebook *rb) {
|
int Rulebooks::no_rules(rulebook *rb) {
|
||||||
if (rb == NULL) return 0;
|
if (rb == NULL) return 0;
|
||||||
return Rules::Bookings::no_rules_in_list(rb->rule_list);
|
return BookingLists::length(rb->rule_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Rulebooks::rule_in_rulebook(rule *R, rulebook *rb) {
|
int Rulebooks::rule_in_rulebook(rule *R, rulebook *rb) {
|
||||||
if (rb == NULL) return FALSE;
|
if (rb == NULL) return FALSE;
|
||||||
return Rules::Bookings::list_contains(rb->rule_list, R);
|
return BookingLists::contains(rb->rule_list, R);
|
||||||
}
|
}
|
||||||
|
|
||||||
booking *Rulebooks::first_booking(rulebook *rb) {
|
booking *Rulebooks::first_booking(rulebook *rb) {
|
||||||
if (rb == NULL) return NULL;
|
if (rb == NULL) return NULL;
|
||||||
return rb->rule_list;
|
return BookingLists::first(rb->rule_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Rulebooks::runs_during_activities(rulebook *rb) {
|
int Rulebooks::runs_during_activities(rulebook *rb) {
|
||||||
|
@ -560,7 +560,7 @@ void Rulebooks::log_name_only(rulebook *rb) {
|
||||||
void Rulebooks::log(rulebook *rb) {
|
void Rulebooks::log(rulebook *rb) {
|
||||||
Rulebooks::log_name_only(rb);
|
Rulebooks::log_name_only(rb);
|
||||||
LOG(": ");
|
LOG(": ");
|
||||||
Rules::Bookings::list_log(rb->rule_list);
|
BookingLists::log(rb->rule_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
rule_context Rulebooks::no_rule_context(void) {
|
rule_context Rulebooks::no_rule_context(void) {
|
||||||
|
@ -610,9 +610,9 @@ int Rulebooks::index(OUTPUT_STREAM, rulebook *rb, char *billing, rule_context rc
|
||||||
#ifdef IF_MODULE
|
#ifdef IF_MODULE
|
||||||
if (rc.action_context) suppress_outcome = TRUE;
|
if (rc.action_context) suppress_outcome = TRUE;
|
||||||
#endif
|
#endif
|
||||||
if (Rules::Bookings::list_is_empty(rb->rule_list, rc)) suppress_outcome = TRUE;
|
if (BookingLists::is_contextually_empty(rb->rule_list, rc)) suppress_outcome = TRUE;
|
||||||
}
|
}
|
||||||
t = Rules::Bookings::list_index(OUT, rb->rule_list, rc, billing, rb, resp_count);
|
t = IXRules::index_booking_list(OUT, rb->rule_list, rc, billing, rb, resp_count);
|
||||||
Rulebooks::Outcomes::index_outcomes(OUT, &(rb->my_outcomes), suppress_outcome);
|
Rulebooks::Outcomes::index_outcomes(OUT, &(rb->my_outcomes), suppress_outcome);
|
||||||
Rulebooks::rb_index_placements(OUT, rb);
|
Rulebooks::rb_index_placements(OUT, rb);
|
||||||
return t;
|
return t;
|
||||||
|
@ -622,11 +622,11 @@ int Rulebooks::index(OUTPUT_STREAM, rulebook *rb, char *billing, rule_context rc
|
||||||
void Rulebooks::index_action_rules(OUTPUT_STREAM, action_name *an, rulebook *rb,
|
void Rulebooks::index_action_rules(OUTPUT_STREAM, action_name *an, rulebook *rb,
|
||||||
int code, char *desc, int *resp_count) {
|
int code, char *desc, int *resp_count) {
|
||||||
int t = 0;
|
int t = 0;
|
||||||
Rules::Bookings::list_suppress_indexed_links();
|
IXRules::list_suppress_indexed_links();
|
||||||
if (code >= 0) t += Rulebooks::index(OUT, built_in_rulebooks[code], desc,
|
if (code >= 0) t += Rulebooks::index(OUT, built_in_rulebooks[code], desc,
|
||||||
Rulebooks::action_context(an), resp_count);
|
Rulebooks::action_context(an), resp_count);
|
||||||
if (rb) t += Rulebooks::index(OUT, rb, desc, Rulebooks::no_rule_context(), resp_count);
|
if (rb) t += Rulebooks::index(OUT, rb, desc, Rulebooks::no_rule_context(), resp_count);
|
||||||
Rules::Bookings::list_resume_indexed_links();
|
IXRules::list_resume_indexed_links();
|
||||||
if (t > 0) HTML_TAG("br");
|
if (t > 0) HTML_TAG("br");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -778,7 +778,7 @@ void Rulebooks::attach_rule(rulebook *rb, booking *the_new_rule,
|
||||||
the_new_rule, current_sentence);
|
the_new_rule, current_sentence);
|
||||||
LOGIF(RULE_ATTACHMENTS, "Rulebook before attachment: $K", rb);
|
LOGIF(RULE_ATTACHMENTS, "Rulebook before attachment: $K", rb);
|
||||||
|
|
||||||
if (Rules::Bookings::get_rule(the_new_rule) == ref_rule) {
|
if (RuleBookings::get_rule(the_new_rule) == ref_rule) {
|
||||||
if (side != INSTEAD_SIDE)
|
if (side != INSTEAD_SIDE)
|
||||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_BeforeOrAfterSelf),
|
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_BeforeOrAfterSelf),
|
||||||
"a rule can't be before or after itself",
|
"a rule can't be before or after itself",
|
||||||
|
@ -790,7 +790,7 @@ void Rulebooks::attach_rule(rulebook *rb, booking *the_new_rule,
|
||||||
if ((rb == built_in_rulebooks[BEFORE_RB]) ||
|
if ((rb == built_in_rulebooks[BEFORE_RB]) ||
|
||||||
(rb == built_in_rulebooks[AFTER_RB]) ||
|
(rb == built_in_rulebooks[AFTER_RB]) ||
|
||||||
(rb == built_in_rulebooks[INSTEAD_RB])) {
|
(rb == built_in_rulebooks[INSTEAD_RB])) {
|
||||||
phrase *ph = Rules::get_defn_as_phrase(Rules::Bookings::get_rule(the_new_rule));
|
phrase *ph = Rules::get_defn_as_phrase(RuleBookings::get_rule(the_new_rule));
|
||||||
if (ph) {
|
if (ph) {
|
||||||
action_name *an = Phrases::Context::required_action(&(ph->runtime_context_data));
|
action_name *an = Phrases::Context::required_action(&(ph->runtime_context_data));
|
||||||
if ((an) && (ActionSemantics::is_out_of_world(an)))
|
if ((an) && (ActionSemantics::is_out_of_world(an)))
|
||||||
|
@ -804,16 +804,16 @@ void Rulebooks::attach_rule(rulebook *rb, booking *the_new_rule,
|
||||||
|
|
||||||
|
|
||||||
if (rb == built_in_rulebooks[SETTING_ACTION_VARIABLES_RB]) {
|
if (rb == built_in_rulebooks[SETTING_ACTION_VARIABLES_RB]) {
|
||||||
Rules::set_never_test_actor(Rules::Bookings::get_rule(the_new_rule));
|
Rules::set_never_test_actor(RuleBookings::get_rule(the_new_rule));
|
||||||
} else {
|
} else {
|
||||||
Rulebooks::Outcomes::modify_rule_to_suit_focus(&(rb->my_focus),
|
Rulebooks::Outcomes::modify_rule_to_suit_focus(&(rb->my_focus),
|
||||||
Rules::Bookings::get_rule(the_new_rule));
|
RuleBookings::get_rule(the_new_rule));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (side == INSTEAD_SIDE) {
|
if (side == INSTEAD_SIDE) {
|
||||||
LOGIF(RULE_ATTACHMENTS,
|
LOGIF(RULE_ATTACHMENTS,
|
||||||
"Copying actor test flags from rule being replaced\n");
|
"Copying actor test flags from rule being replaced\n");
|
||||||
Rules::copy_actor_test_flags(Rules::Bookings::get_rule(the_new_rule), ref_rule);
|
Rules::copy_actor_test_flags(RuleBookings::get_rule(the_new_rule), ref_rule);
|
||||||
LOGIF(RULE_ATTACHMENTS,
|
LOGIF(RULE_ATTACHMENTS,
|
||||||
"Copying former rulebook's variable permissions to displaced rule\n");
|
"Copying former rulebook's variable permissions to displaced rule\n");
|
||||||
Rules::put_variables_in_scope(ref_rule, rb->accessible_from_rb);
|
Rules::put_variables_in_scope(ref_rule, rb->accessible_from_rb);
|
||||||
|
@ -822,20 +822,20 @@ void Rulebooks::attach_rule(rulebook *rb, booking *the_new_rule,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Rules::put_variables_in_scope(Rules::Bookings::get_rule(the_new_rule), rb->accessible_from_rb);
|
Rules::put_variables_in_scope(RuleBookings::get_rule(the_new_rule), rb->accessible_from_rb);
|
||||||
if (Rulebooks::focus(rb) == ACTION_FOCUS)
|
if (Rulebooks::focus(rb) == ACTION_FOCUS)
|
||||||
Rules::put_action_variables_in_scope(Rules::Bookings::get_rule(the_new_rule));
|
Rules::put_action_variables_in_scope(RuleBookings::get_rule(the_new_rule));
|
||||||
if (rb->fragmentation_stem_length > 0)
|
if (rb->fragmentation_stem_length > 0)
|
||||||
Rules::suppress_action_testing(Rules::Bookings::get_rule(the_new_rule));
|
Rules::suppress_action_testing(RuleBookings::get_rule(the_new_rule));
|
||||||
|
|
||||||
Phrases::Context::ensure_avl(Rules::Bookings::get_rule(the_new_rule));
|
Phrases::Context::ensure_avl(RuleBookings::get_rule(the_new_rule));
|
||||||
|
|
||||||
Rules::Bookings::list_add(rb->rule_list, the_new_rule, placing, side, ref_rule);
|
BookingLists::add(rb->rule_list, the_new_rule, placing, side, ref_rule);
|
||||||
LOGIF(RULE_ATTACHMENTS, "Rulebook after attachment: $K", rb);
|
LOGIF(RULE_ATTACHMENTS, "Rulebook after attachment: $K", rb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rulebooks::detach_rule(rulebook *rb, rule *the_new_rule) {
|
void Rulebooks::detach_rule(rulebook *rb, rule *the_new_rule) {
|
||||||
Rules::Bookings::list_remove(rb->rule_list, the_new_rule);
|
BookingLists::remove(rb->rule_list, the_new_rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
@h Compilation.
|
@h Compilation.
|
||||||
|
@ -845,10 +845,10 @@ code are the real outcome of the code in this section.
|
||||||
|
|
||||||
=
|
=
|
||||||
void Rulebooks::compile_rule_phrases(rulebook *rb, int *i, int max_i) {
|
void Rulebooks::compile_rule_phrases(rulebook *rb, int *i, int max_i) {
|
||||||
Rules::Bookings::list_judge_ordering(rb->rule_list);
|
RuleBookings::list_judge_ordering(rb->rule_list);
|
||||||
if (Rules::Bookings::list_is_empty_of_i7_rules(rb->rule_list)) return;
|
if (BookingLists::is_empty_of_i7_rules(rb->rule_list)) return;
|
||||||
|
|
||||||
Rules::Bookings::list_compile_rule_phrases(rb->rule_list, i, max_i);
|
BookingLists::compile(rb->rule_list, i, max_i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rulebooks::rulebooks_array_array(void) {
|
void Rulebooks::rulebooks_array_array(void) {
|
||||||
|
@ -863,7 +863,7 @@ void Rulebooks::rulebooks_array_array(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Rulebooks::compile_rulebooks(void) {
|
void Rulebooks::compile_rulebooks(void) {
|
||||||
Rules::Bookings::start_list_compilation();
|
RTRules::start_list_compilation();
|
||||||
rulebook *rb;
|
rulebook *rb;
|
||||||
LOOP_OVER(rb, rulebook) {
|
LOOP_OVER(rb, rulebook) {
|
||||||
int act = FALSE;
|
int act = FALSE;
|
||||||
|
@ -873,7 +873,7 @@ void Rulebooks::compile_rulebooks(void) {
|
||||||
if (Rulebooks::focus(rb) == PARAMETER_FOCUS) par = TRUE;
|
if (Rulebooks::focus(rb) == PARAMETER_FOCUS) par = TRUE;
|
||||||
LOGIF(RULEBOOK_COMPILATION, "Compiling rulebook: %W = %n\n",
|
LOGIF(RULEBOOK_COMPILATION, "Compiling rulebook: %W = %n\n",
|
||||||
rb->primary_name, rb->rb_iname);
|
rb->primary_name, rb->rb_iname);
|
||||||
Rules::Bookings::list_compile(rb->rule_list, rb->rb_iname, act, par);
|
RTRules::list_compile(rb->rule_list, rb->rb_iname, act, par);
|
||||||
}
|
}
|
||||||
rule *R;
|
rule *R;
|
||||||
LOOP_OVER(R, rule)
|
LOOP_OVER(R, rule)
|
||||||
|
@ -934,7 +934,7 @@ kind *Rulebooks::kind_from_context(void) {
|
||||||
rulebook *rb;
|
rulebook *rb;
|
||||||
if (ph == NULL) return NULL;
|
if (ph == NULL) return NULL;
|
||||||
LOOP_OVER(rb, rulebook)
|
LOOP_OVER(rb, rulebook)
|
||||||
if (Rules::Bookings::list_contains_ph(rb->rule_list, ph))
|
if (BookingLists::contains_ph(rb->rule_list, ph))
|
||||||
return Rulebooks::Outcomes::get_outcome_kind(&(rb->my_outcomes));
|
return Rulebooks::Outcomes::get_outcome_kind(&(rb->my_outcomes));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -312,7 +312,7 @@ and returns 1 if |R1| is more specific than |R2|, -1 if |R2| is more specific
|
||||||
than |R1|, or 0 if they are equally good.
|
than |R1|, or 0 if they are equally good.
|
||||||
|
|
||||||
=
|
=
|
||||||
int Rules::compare_specificity(rule *R1, rule *R2, int log_this) {
|
int Rules::cmp(rule *R1, rule *R2, int log_this) {
|
||||||
phrase *ph1 = R1->defn_as_phrase, *ph2 = R2->defn_as_phrase;
|
phrase *ph1 = R1->defn_as_phrase, *ph2 = R2->defn_as_phrase;
|
||||||
ph_runtime_context_data *phrcd1 = NULL, *phrcd2 = NULL;
|
ph_runtime_context_data *phrcd1 = NULL, *phrcd2 = NULL;
|
||||||
if (ph1) phrcd1 = &(ph1->runtime_context_data);
|
if (ph1) phrcd1 = &(ph1->runtime_context_data);
|
||||||
|
@ -424,8 +424,8 @@ of another.
|
||||||
=
|
=
|
||||||
void Rules::request_automatic_placement(rule *R) {
|
void Rules::request_automatic_placement(rule *R) {
|
||||||
if (R->automatic_booking == NULL)
|
if (R->automatic_booking == NULL)
|
||||||
R->automatic_booking = Rules::Bookings::new(R);
|
R->automatic_booking = RuleBookings::new(R);
|
||||||
Rules::Bookings::request_automatic_placement(R->automatic_booking);
|
RuleBookings::request_automatic_placement(R->automatic_booking);
|
||||||
}
|
}
|
||||||
|
|
||||||
@h Actor testing.
|
@h Actor testing.
|
||||||
|
|
|
@ -192,7 +192,7 @@ PHRCDs are used to make sure it appears in the right position.
|
||||||
=
|
=
|
||||||
void Phrases::Manager::add_rules_to_rulebooks(void) {
|
void Phrases::Manager::add_rules_to_rulebooks(void) {
|
||||||
Phrases::Manager::advance_phrase_time_to(EARLY_AFTERNOON_PHT);
|
Phrases::Manager::advance_phrase_time_to(EARLY_AFTERNOON_PHT);
|
||||||
Rules::Bookings::make_automatic_placements();
|
RuleBookings::make_automatic_placements();
|
||||||
inter_name *iname = Hierarchy::find(NUMBER_RULEBOOKS_CREATED_HL);
|
inter_name *iname = Hierarchy::find(NUMBER_RULEBOOKS_CREATED_HL);
|
||||||
Emit::named_numeric_constant(iname, (inter_ti) NUMBER_CREATED(rulebook));
|
Emit::named_numeric_constant(iname, (inter_ti) NUMBER_CREATED(rulebook));
|
||||||
Hierarchy::make_available(Emit::tree(), iname);
|
Hierarchy::make_available(Emit::tree(), iname);
|
||||||
|
|
|
@ -15,6 +15,7 @@ Chapter 2: Rules and Rulebooks
|
||||||
a way to organise lists of them."
|
a way to organise lists of them."
|
||||||
Rules
|
Rules
|
||||||
Rule Bookings
|
Rule Bookings
|
||||||
|
Booking Lists
|
||||||
Rulebooks
|
Rulebooks
|
||||||
Focus and Outcome
|
Focus and Outcome
|
||||||
Stacked Variables
|
Stacked Variables
|
||||||
|
|
|
@ -122,3 +122,80 @@ int IXRules::index(OUTPUT_STREAM, rule *R, rulebook *owner, rule_context rc) {
|
||||||
Index::link(OUT, Wordings::first_wn(Node::get_text(acl->where_imposed)));
|
Index::link(OUT, Wordings::first_wn(Node::get_text(acl->where_imposed)));
|
||||||
WRITE(" %+W", Node::get_text(acl->where_imposed));
|
WRITE(" %+W", Node::get_text(acl->where_imposed));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@h Indexing of lists.
|
||||||
|
There's a division of labour: here we arrange the index of the rules and
|
||||||
|
show the linkage between them, while the actual content for each rule is
|
||||||
|
handled in the "Rules" section.
|
||||||
|
|
||||||
|
=
|
||||||
|
int IXRules::index_booking_list(OUTPUT_STREAM, booking_list *L, rule_context rc,
|
||||||
|
char *billing, rulebook *owner, int *resp_count) {
|
||||||
|
booking *prev = NULL;
|
||||||
|
int count = 0;
|
||||||
|
LOOP_OVER_BOOKINGS(br, L) {
|
||||||
|
rule *R = RuleBookings::get_rule(br);
|
||||||
|
int skip = FALSE;
|
||||||
|
#ifdef IF_MODULE
|
||||||
|
phrase *ph = Rules::get_defn_as_phrase(R);
|
||||||
|
if (ph) {
|
||||||
|
ph_runtime_context_data *phrcd = &(ph->runtime_context_data);
|
||||||
|
scene *during_scene = Phrases::Context::get_scene(phrcd);
|
||||||
|
if ((rc.scene_context) && (during_scene != rc.scene_context)) skip = TRUE;
|
||||||
|
if ((rc.action_context) &&
|
||||||
|
(Phrases::Context::within_action_context(phrcd, rc.action_context) == FALSE))
|
||||||
|
skip = TRUE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (skip == FALSE) {
|
||||||
|
count++;
|
||||||
|
IXRules::br_start_index_line(OUT, prev, billing);
|
||||||
|
*resp_count += IXRules::index(OUT, R, owner, rc);
|
||||||
|
}
|
||||||
|
prev = br;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ The "index links" are not hypertextual: they're the little icons showing
|
||||||
|
the order of precedence of rules in the list. On some index pages we don't
|
||||||
|
want this, so:
|
||||||
|
|
||||||
|
=
|
||||||
|
int show_index_links = TRUE;
|
||||||
|
|
||||||
|
void IXRules::list_suppress_indexed_links(void) {
|
||||||
|
show_index_links = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void IXRules::list_resume_indexed_links(void) {
|
||||||
|
show_index_links = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void IXRules::br_start_index_line(OUTPUT_STREAM, booking *prev, char *billing) {
|
||||||
|
HTML::open_indented_p(OUT, 2, "hanging");
|
||||||
|
if ((billing[0]) && (show_index_links)) IXRules::br_show_linkage_icon(OUT, prev);
|
||||||
|
WRITE("%s", billing);
|
||||||
|
WRITE(" ");
|
||||||
|
if ((billing[0] == 0) && (show_index_links)) IXRules::br_show_linkage_icon(OUT, prev);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ And here's how the index links (if wanted) are chosen and plotted:
|
||||||
|
|
||||||
|
=
|
||||||
|
void IXRules::br_show_linkage_icon(OUTPUT_STREAM, booking *prev) {
|
||||||
|
text_stream *icon_name = NULL; /* redundant assignment to appease |gcc -O2| */
|
||||||
|
if ((prev == NULL) || (prev->commentary.tooltip_text == NULL)) {
|
||||||
|
HTML::icon_with_tooltip(OUT, I"inform:/doc_images/rulenone.png",
|
||||||
|
I"start of rulebook", NULL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (prev->commentary.next_rule_specificity) {
|
||||||
|
case -1: icon_name = I"inform:/doc_images/ruleless.png"; break;
|
||||||
|
case 0: icon_name = I"inform:/doc_images/ruleequal.png"; break;
|
||||||
|
case 1: icon_name = I"inform:/doc_images/rulemore.png"; break;
|
||||||
|
default: internal_error("unknown rule specificity");
|
||||||
|
}
|
||||||
|
HTML::icon_with_tooltip(OUT, icon_name,
|
||||||
|
prev->commentary.tooltip_text, prev->commentary.law_applied);
|
||||||
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ which use this module:
|
||||||
@ Like all modules, this one must define a |start| and |end| function:
|
@ Like all modules, this one must define a |start| and |end| function:
|
||||||
|
|
||||||
=
|
=
|
||||||
COMPILE_WRITER(booking *, Rules::Bookings::log)
|
COMPILE_WRITER(booking *, RuleBookings::log)
|
||||||
COMPILE_WRITER(inference *, Inferences::log)
|
COMPILE_WRITER(inference *, Inferences::log)
|
||||||
COMPILE_WRITER(inference_subject *, InferenceSubjects::log)
|
COMPILE_WRITER(inference_subject *, InferenceSubjects::log)
|
||||||
COMPILE_WRITER(property *, Properties::log)
|
COMPILE_WRITER(property *, Properties::log)
|
||||||
|
@ -43,7 +43,7 @@ void KnowledgeModule::start(void) {
|
||||||
SettingPropertyRelations::start();
|
SettingPropertyRelations::start();
|
||||||
ComparativeRelations::start();
|
ComparativeRelations::start();
|
||||||
ProvisionRelation::start();
|
ProvisionRelation::start();
|
||||||
REGISTER_WRITER('b', Rules::Bookings::log);
|
REGISTER_WRITER('b', RuleBookings::log);
|
||||||
REGISTER_WRITER('I', Inferences::log);
|
REGISTER_WRITER('I', Inferences::log);
|
||||||
REGISTER_WRITER('j', InferenceSubjects::log);
|
REGISTER_WRITER('j', InferenceSubjects::log);
|
||||||
REGISTER_WRITER('K', Rulebooks::log);
|
REGISTER_WRITER('K', Rulebooks::log);
|
||||||
|
|
|
@ -330,3 +330,291 @@ void RTRules::compile_comment(rule *R, int index, int from) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@h Compilation of I6-format rulebook.
|
||||||
|
The following can generate both old-style array rulebooks and routine rulebooks,
|
||||||
|
which were introduced in December 2010.
|
||||||
|
|
||||||
|
=
|
||||||
|
void RTRules::start_list_compilation(void) {
|
||||||
|
inter_name *iname = Hierarchy::find(EMPTY_RULEBOOK_INAME_HL);
|
||||||
|
packaging_state save = Routines::begin(iname);
|
||||||
|
LocalVariables::add_named_call(I"forbid_breaks");
|
||||||
|
Produce::rfalse(Emit::tree());
|
||||||
|
Routines::end(save);
|
||||||
|
Hierarchy::make_available(Emit::tree(), iname);
|
||||||
|
}
|
||||||
|
|
||||||
|
@
|
||||||
|
|
||||||
|
@d ARRAY_RBF 1 /* format as an array simply listing the rules */
|
||||||
|
@d GROUPED_ARRAY_RBF 2 /* format as a grouped array, for quicker action testing */
|
||||||
|
@d ROUTINE_RBF 3 /* format as a routine which runs the rulebook */
|
||||||
|
@d RULE_OPTIMISATION_THRESHOLD 20 /* group arrays when larger than this number of rules */
|
||||||
|
|
||||||
|
=
|
||||||
|
inter_name *RTRules::list_compile(booking_list *L,
|
||||||
|
inter_name *identifier, int action_based, int parameter_based) {
|
||||||
|
if (L == NULL) return NULL;
|
||||||
|
inter_name *rb_symb = NULL;
|
||||||
|
|
||||||
|
int countup = BookingLists::length(L);
|
||||||
|
if (countup == 0) {
|
||||||
|
rb_symb = Emit::named_iname_constant(identifier, K_value,
|
||||||
|
Hierarchy::find(EMPTY_RULEBOOK_INAME_HL));
|
||||||
|
} else {
|
||||||
|
int format = ROUTINE_RBF;
|
||||||
|
|
||||||
|
@<Compile the rulebook in the given format@>;
|
||||||
|
}
|
||||||
|
return rb_symb;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ Grouping is the practice of gathering together rules which all rely on
|
||||||
|
the same action going on; it's then efficient to test the action once rather
|
||||||
|
than once for each rule.
|
||||||
|
|
||||||
|
@<Compile the rulebook in the given format@> =
|
||||||
|
int grouping = FALSE, group_cap = 0;
|
||||||
|
switch (format) {
|
||||||
|
case GROUPED_ARRAY_RBF: grouping = TRUE; group_cap = 31; break;
|
||||||
|
case ROUTINE_RBF: grouping = TRUE; group_cap = 2000000000; break;
|
||||||
|
}
|
||||||
|
if (action_based == FALSE) grouping = FALSE;
|
||||||
|
|
||||||
|
inter_symbol *forbid_breaks_s = NULL, *rv_s = NULL, *original_deadflag_s = NULL, *p_s = NULL;
|
||||||
|
packaging_state save_array = Emit::unused_packaging_state();
|
||||||
|
|
||||||
|
@<Open the rulebook compilation@>;
|
||||||
|
int group_size = 0, group_started = FALSE, entry_count = 0, action_group_open = FALSE;
|
||||||
|
LOOP_OVER_BOOKINGS(br, L) {
|
||||||
|
parse_node *spec = Rvalues::from_rule(RuleBookings::get_rule(br));
|
||||||
|
if (grouping) {
|
||||||
|
if (group_size == 0) {
|
||||||
|
if (group_started) @<End an action group in the rulebook@>;
|
||||||
|
#ifdef IF_MODULE
|
||||||
|
action_name *an = RTRules::br_required_action(br);
|
||||||
|
booking *brg = br;
|
||||||
|
while ((brg) && (an == RTRules::br_required_action(brg))) {
|
||||||
|
group_size++;
|
||||||
|
brg = brg->next_booking;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifndef IF_MODULE
|
||||||
|
booking *brg = br;
|
||||||
|
while (brg) {
|
||||||
|
group_size++;
|
||||||
|
brg = brg->next_booking;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (group_size > group_cap) group_size = group_cap;
|
||||||
|
group_started = TRUE;
|
||||||
|
@<Begin an action group in the rulebook@>;
|
||||||
|
}
|
||||||
|
group_size--;
|
||||||
|
}
|
||||||
|
@<Compile an entry in the rulebook@>;
|
||||||
|
entry_count++;
|
||||||
|
}
|
||||||
|
if (group_started) @<End an action group in the rulebook@>;
|
||||||
|
@<Close the rulebook compilation@>;
|
||||||
|
|
||||||
|
@<Open the rulebook compilation@> =
|
||||||
|
rb_symb = identifier;
|
||||||
|
switch (format) {
|
||||||
|
case ARRAY_RBF: save_array = Emit::named_array_begin(identifier, K_value); break;
|
||||||
|
case GROUPED_ARRAY_RBF: save_array = Emit::named_array_begin(identifier, K_value); Emit::array_numeric_entry((inter_ti) -2); break;
|
||||||
|
case ROUTINE_RBF: {
|
||||||
|
save_array = Routines::begin(identifier);
|
||||||
|
forbid_breaks_s = LocalVariables::add_named_call_as_symbol(I"forbid_breaks");
|
||||||
|
rv_s = LocalVariables::add_internal_local_c_as_symbol(I"rv", "return value");
|
||||||
|
if (countup > 1)
|
||||||
|
original_deadflag_s = LocalVariables::add_internal_local_c_as_symbol(I"original_deadflag", "saved state");
|
||||||
|
if (parameter_based)
|
||||||
|
p_s = LocalVariables::add_internal_local_c_as_symbol(I"p", "rulebook parameter");
|
||||||
|
|
||||||
|
if (countup > 1) {
|
||||||
|
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::ref_symbol(Emit::tree(), K_value, original_deadflag_s);
|
||||||
|
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(DEADFLAG_HL));
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
}
|
||||||
|
if (parameter_based) {
|
||||||
|
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::ref_symbol(Emit::tree(), K_value, p_s);
|
||||||
|
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(PARAMETER_VALUE_HL));
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@<Begin an action group in the rulebook@> =
|
||||||
|
switch (format) {
|
||||||
|
case GROUPED_ARRAY_RBF:
|
||||||
|
#ifdef IF_MODULE
|
||||||
|
if (an) Emit::array_action_entry(an); else
|
||||||
|
#endif
|
||||||
|
Emit::array_numeric_entry((inter_ti) -2);
|
||||||
|
if (group_size > 1) Emit::array_numeric_entry((inter_ti) group_size);
|
||||||
|
action_group_open = TRUE;
|
||||||
|
break;
|
||||||
|
case ROUTINE_RBF:
|
||||||
|
#ifdef IF_MODULE
|
||||||
|
if (an) {
|
||||||
|
Produce::inv_primitive(Emit::tree(), IFELSE_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(ACTION_HL));
|
||||||
|
Produce::val_iname(Emit::tree(), K_value, RTActions::double_sharp(an));
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::code(Emit::tree());
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
|
||||||
|
action_group_open = TRUE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
@<Compile an entry in the rulebook@> =
|
||||||
|
switch (format) {
|
||||||
|
case ARRAY_RBF:
|
||||||
|
case GROUPED_ARRAY_RBF:
|
||||||
|
Specifications::Compiler::emit(spec);
|
||||||
|
break;
|
||||||
|
case ROUTINE_RBF:
|
||||||
|
if (entry_count > 0) {
|
||||||
|
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::inv_primitive(Emit::tree(), NE_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val_symbol(Emit::tree(), K_value, original_deadflag_s);
|
||||||
|
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(DEADFLAG_HL));
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::code(Emit::tree());
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
}
|
||||||
|
@<Compile an optional mid-rulebook paragraph break@>;
|
||||||
|
if (parameter_based) {
|
||||||
|
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::ref_iname(Emit::tree(), K_value, Hierarchy::find(PARAMETER_VALUE_HL));
|
||||||
|
Produce::val_symbol(Emit::tree(), K_value, p_s);
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
}
|
||||||
|
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::ref_symbol(Emit::tree(), K_value, rv_s);
|
||||||
|
Produce::inv_primitive(Emit::tree(), INDIRECT0_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Specifications::Compiler::emit_as_val(K_value, spec);
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
|
||||||
|
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val_symbol(Emit::tree(), K_value, rv_s);
|
||||||
|
Produce::code(Emit::tree());
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val_symbol(Emit::tree(), K_value, rv_s);
|
||||||
|
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 2);
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::code(Emit::tree());
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(REASON_THE_ACTION_FAILED_HL));
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
|
||||||
|
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Specifications::Compiler::emit_as_val(K_value, spec);
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
|
||||||
|
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::inv_primitive(Emit::tree(), LOOKUPREF_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(LATEST_RULE_RESULT_HL));
|
||||||
|
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
@<End an action group in the rulebook@> =
|
||||||
|
if (action_group_open) {
|
||||||
|
switch (format) {
|
||||||
|
case ROUTINE_RBF:
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::code(Emit::tree());
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
@<Compile an optional mid-rulebook paragraph break@>;
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
action_group_open = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@<Close the rulebook compilation@> =
|
||||||
|
switch (format) {
|
||||||
|
case ARRAY_RBF:
|
||||||
|
case GROUPED_ARRAY_RBF:
|
||||||
|
Emit::array_null_entry();
|
||||||
|
Emit::array_end(save_array);
|
||||||
|
break;
|
||||||
|
case ROUTINE_RBF:
|
||||||
|
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Routines::end(save_array);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
@<Compile an optional mid-rulebook paragraph break@> =
|
||||||
|
if (entry_count > 0) {
|
||||||
|
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val_iname(Emit::tree(), K_number, Hierarchy::find(SAY__P_HL));
|
||||||
|
Produce::code(Emit::tree());
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(RULEBOOKPARBREAK_HL));
|
||||||
|
Produce::down(Emit::tree());
|
||||||
|
Produce::val_symbol(Emit::tree(), K_value, forbid_breaks_s);
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
Produce::up(Emit::tree());
|
||||||
|
}
|
||||||
|
|
||||||
|
@
|
||||||
|
|
||||||
|
=
|
||||||
|
#ifdef IF_MODULE
|
||||||
|
action_name *RTRules::br_required_action(booking *br) {
|
||||||
|
phrase *ph = Rules::get_defn_as_phrase(br->rule_being_booked);
|
||||||
|
if (ph) return Phrases::Context::required_action(&(ph->runtime_context_data));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue