mirror of
https://github.com/ganelson/inform.git
synced 2024-07-02 23:14:57 +03:00
Started work on CGLs
This commit is contained in:
parent
d72b2de626
commit
4e3fbffcc8
|
@ -263,6 +263,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">plugin_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">property_of_value_storage_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">runtime_kind_structure_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">slash_gpr_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">test_scenario_CLASS</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -282,6 +283,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">plugin</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_of_value_storage</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">runtime_kind_structure</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">slash_gpr</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">test_scenario</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b><a href="../index-module/index.html" class="internal">index</a> —
|
||||
|
@ -333,7 +335,6 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">regions_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">release_instructions_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">scene_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">slash_gpr_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">spatial_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">anl_clause_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">anl_entry_CLASS</span>
|
||||
|
@ -366,7 +367,6 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">regions_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">release_instructions</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">slash_gpr</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_data</span><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl_clause</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -85,7 +85,7 @@ function togglePopup(material_id) {
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *, </span><a href="4-ap2.html#SP5" class="function-link"><span class="function-syntax">ActionPatterns::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *, </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">cg_line</span><span class="plain-syntax"> *, </span><a href="5-cgl.html#SP3" class="function-link"><span class="function-syntax">UnderstandLines::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">cg_line</span><span class="plain-syntax"> *, </span><a href="5-cgl.html#SP2" class="function-link"><span class="function-syntax">UnderstandLines::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *, </span><a href="4-anl.html#SP26" class="function-link"><span class="function-syntax">ActionNameLists::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">anl_entry</span><span class="plain-syntax"> *, </span><a href="4-anl.html#SP26" class="function-link"><span class="function-syntax">ActionNameLists::log_entry</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *, </span><a href="4-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::log</span></a><span class="plain-syntax">)</span>
|
||||
|
@ -133,7 +133,7 @@ function togglePopup(material_id) {
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, </span><a href="4-ap2.html#SP5" class="function-link"><span class="function-syntax">ActionPatterns::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'G'</span><span class="plain-syntax">, </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'g'</span><span class="plain-syntax">, </span><a href="5-cgl.html#SP3" class="function-link"><span class="function-syntax">UnderstandLines::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'g'</span><span class="plain-syntax">, </span><a href="5-cgl.html#SP2" class="function-link"><span class="function-syntax">UnderstandLines::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'L'</span><span class="plain-syntax">, </span><a href="4-anl.html#SP26" class="function-link"><span class="function-syntax">ActionNameLists::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'8'</span><span class="plain-syntax">, </span><a href="4-anl.html#SP26" class="function-link"><span class="function-syntax">ActionNameLists::log_entry</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'l'</span><span class="plain-syntax">, </span><a href="4-ann.html#SP5" class="function-link"><span class="function-syntax">ActionNameNames::log</span></a><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -100,7 +100,7 @@ kind <span class="extract"><span class="extract-syntax">K_action_name</span></sp
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">action_name</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure action_name is accessed in 4/ap, 4/as, 4/av, 4/ann, 4/anl, 4/nap, 5/cg, 5/gpr and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure action_name is accessed in 4/ap, 4/as, 4/av, 4/ann, 4/anl, 4/nap, 5/cg, 5/cgl, 5/gpr and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>Note that we notify the <span class="extract"><span class="extract-syntax">K_action_name</span></span> kind that a new enumerated value
|
||||
for it exists; we don't need to record the reply (i.e. the number used as
|
||||
this value at run-time) because it will be the same as the allocation ID
|
||||
|
@ -182,11 +182,11 @@ our concern here:
|
|||
</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">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#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">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('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="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="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP23" class="function-link"><span class="function-syntax">UnderstandLines::list_with_action_add</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandsIndex::list_with_action_add</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>
|
||||
|
||||
|
|
|
@ -148,7 +148,7 @@ enough that this is almost never used.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::tensed</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ActionNameNames::tensed</span></span>:<br/><a href="4-ann.html#SP10">§10</a>, <a href="4-ann.html#SP11">§11</a>, <a href="4-ann.html#SP13">§13</a><br/>Actions Plugin - <a href="4-ap.html#SP4">§4</a><br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP3">§3</a><br/>Actions - <a href="4-act.html#SP3">§3</a><br/>Action Semantics - <a href="4-as.html#SP6_1">§6.1</a><br/>Action Name Lists - <a href="4-anl.html#SP26">§26</a>, <a href="4-anl.html#SP33_1_2">§33.1.2</a><br/>Going - <a href="4-gng.html#SP3">§3</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameNames::tensed</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ActionNameNames::tensed</span></span>:<br/><a href="4-ann.html#SP10">§10</a>, <a href="4-ann.html#SP11">§11</a>, <a href="4-ann.html#SP13">§13</a><br/>Actions Plugin - <a href="4-ap.html#SP4">§4</a><br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP3">§3</a><br/>Actions - <a href="4-act.html#SP3">§3</a><br/>Action Semantics - <a href="4-as.html#SP6_1">§6.1</a><br/>Action Name Lists - <a href="4-anl.html#SP26">§26</a>, <a href="4-anl.html#SP33_1_2">§33.1.2</a><br/>Going - <a href="4-gng.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tense</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">present_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tense</span><span class="plain-syntax"> == </span><span class="identifier-syntax">HASBEEN_TENSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">naming_data</span><span class="plain-syntax">.</span><span class="element-syntax">past_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"action tense unsupported"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -214,7 +214,7 @@ preferred way to do that is to use activities for selecting missing parameters.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::is_out_of_world</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::is_out_of_world</span></span>:<br/>Parse Clauses - <a href="4-pc.html#SP1_3">§1.3</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::is_out_of_world</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::is_out_of_world</span></span>:<br/>Parse Clauses - <a href="4-pc.html#SP1_3">§1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">out_of_world</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -241,7 +241,7 @@ used to verify vaguely described actions in which no noun is given.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::check_valid_application</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">ActionSemantics::check_valid_application</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nouns_supplied</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::check_valid_application</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nouns_supplied</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">noun_kinds</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">possible</span><span class="plain-syntax"> = </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="identifier-syntax">max_parameters</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nouns_supplied</span><span class="plain-syntax"> > </span><span class="identifier-syntax">possible</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -93,7 +93,7 @@ this category if it matches one of the patterns.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">named_action_pattern_entry</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure named_action_pattern is accessed in 4/anaa, 4/act, 4/ann, 4/anl, 5/cg, 5/gpr and here.</li><li>The structure named_action_pattern_entry is private to this section.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure named_action_pattern is accessed in 4/anaa, 4/act, 4/ann, 4/anl, 5/cg, 5/cgl, 5/gpr and here.</li><li>The structure named_action_pattern_entry is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>We are allowed to give names to certain kinds of behaviour by "characterising"
|
||||
an action.
|
||||
</p>
|
||||
|
|
|
@ -210,11 +210,11 @@ when they do not start with a verb. We treat those as being commands which
|
|||
do in fact start with the invisible "no verb verb".
|
||||
<a href="#fnref:1" title="return to text"> ↩</a></p></li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::get_verb_text</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">CommandGrammars::get_verb_text</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP24">§24</a>, <a href="5-cgl.html#SP25">§25</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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::get_verb_text</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">command</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">CommandGrammars::cg_is_genuinely_verbal</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">CommandGrammars::cg_is_genuinely_verbal</span></span>:<br/><a href="5-cg.html#SP21">§21</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::cg_is_genuinely_verbal</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">CommandGrammars::cg_is_genuinely_verbal</span></span>:<br/><a href="5-cg.html#SP21">§21</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="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="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">command</span><span 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>
|
||||
|
@ -226,7 +226,7 @@ the <span class="extract"><span class="extract-syntax">EMPTY_WORDING</span></spa
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_command_verb</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">CommandGrammars::for_command_verb</span></span>:<br/><a href="5-cg.html#SP7">§7</a><br/>Understand Sentences - <a href="5-us.html#SP15_1">§15.1</a>, <a href="5-us.html#SP15_2">§15.2</a>, <a href="5-us.html#SP15_3">§15.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_command_verb</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">CommandGrammars::for_command_verb</span></span>:<br/><a href="5-cg.html#SP7">§7</a><br/>Understand Sentences - <a href="5-us.html#SP15_1">§15.1</a>, <a href="5-us.html#SP15_2">§15.2</a>, <a href="5-us.html#SP15_3">§15.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="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>
|
||||
<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>
|
||||
|
@ -247,7 +247,7 @@ that it is guaranteed to return a non-<span class="extract"><span class="extract
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_command_verb_creating</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">CommandGrammars::for_command_verb_creating</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.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">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_command_verb_creating</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">CommandGrammars::for_command_verb_creating</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.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">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP6" class="function-link"><span class="function-syntax">CommandGrammars::for_command_verb</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::cg_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CG_IS_COMMAND</span><span class="plain-syntax">);</span>
|
||||
|
@ -266,7 +266,7 @@ Note that these cannot be called on the no verb verb.
|
|||
</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">CommandGrammars::add_alias</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">CommandGrammars::add_alias</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP15_3">§15.3</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="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">CommandGrammars::add_alias</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">CommandGrammars::add_alias</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP15_3">§15.3</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="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">cg</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">"add alias to null CG"</span><span 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="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"add alias to non-command CG"</span><span 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">no_aliased_commands</span><span class="plain-syntax"> == </span><span class="constant-syntax">MAX_ALIASED_COMMANDS</span><span class="plain-syntax">) {</span>
|
||||
|
@ -288,7 +288,7 @@ the CG of grammar lines so that it can either be ignored or re-used.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::remove_command</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_command</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP15_1">§15.1</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="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">CommandGrammars::remove_command</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">CommandGrammars::remove_command</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP15_1">§15.1</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="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">cg</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 detach alias command from null CG"</span><span 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>
|
||||
|
@ -324,9 +324,9 @@ dropping action":
|
|||
</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">CommandGrammars::remove_action</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">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#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="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="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP4" class="function-link"><span class="function-syntax">UnderstandLines::list_remove</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</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">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP3" class="function-link"><span class="function-syntax">UnderstandLines::list_remove</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. The CG_IS_TOKEN form. </b>These are like text substitutions in reverse. For instance, we could define
|
||||
|
@ -338,7 +338,7 @@ token called "[suitable colour]".
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::new_named_token</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">CommandGrammars::new_named_token</span></span>:<br/><a href="5-cg.html#SP12">§12</a><br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.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">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::new_named_token</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">CommandGrammars::new_named_token</span></span>:<br/><a href="5-cg.html#SP12">§12</a><br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.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">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP11" class="function-link"><span class="function-syntax">CommandGrammars::named_token_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</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">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::cg_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CG_IS_TOKEN</span><span class="plain-syntax">);</span>
|
||||
|
@ -348,7 +348,7 @@ token called "[suitable colour]".
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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="function-syntax">CommandGrammars::named_token_by_name</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">CommandGrammars::named_token_by_name</span></span>:<br/><a href="5-cg.html#SP12">§12</a><br/>Grammar Tokens - <a href="5-gt.html#SP9">§9</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">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::named_token_by_name</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">CommandGrammars::named_token_by_name</span></span>:<br/><a href="5-cg.html#SP12">§12</a><br/>Grammar Tokens - <a href="5-gt.html#SP9">§9</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">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>
|
||||
<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_TOKEN</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Wordings::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">token_name</span><span class="plain-syntax">)))</span>
|
||||
|
@ -397,7 +397,7 @@ times of day are not inference subjects anyway, so we would need <span class="ex
|
|||
in any case for those.
|
||||
<a href="#fnref:2" title="return to text"> ↩</a></p></li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_subject</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">CommandGrammars::for_subject</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_subject</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">CommandGrammars::for_subject</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-></span><span class="element-syntax">understand_as_this_object</span><span class="plain-syntax"> != </span><span class="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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-></span><span class="element-syntax">understand_as_this_object</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::cg_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CG_IS_SUBJECT</span><span class="plain-syntax">);</span>
|
||||
|
@ -415,7 +415,7 @@ at run-time, and is just a little faster for the command parser then.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::take_out_one_word_grammar</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">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_SUBJECT</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">"One-word optimisation applies only to objects"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP10" class="function-link"><span class="function-syntax">UnderstandLines::list_take_out_one_word_grammar</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP9" class="function-link"><span class="function-syntax">UnderstandLines::list_take_out_one_word_grammar</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. The CG_IS_VALUE form. </b>This is used to store names for, say, particular numbers, or enumeration
|
||||
|
@ -434,7 +434,7 @@ different numbers, for example; the <span class="extract"><span class="extract-s
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_kind</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">CommandGrammars::for_kind</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_kind</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">CommandGrammars::for_kind</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"cannot get CG for null kind"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-cg.html#SP15" class="function-link"><span class="function-syntax">CommandGrammars::get_parsing_grammar</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</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="5-cg.html#SP15" class="function-link"><span class="function-syntax">CommandGrammars::get_parsing_grammar</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
|
@ -447,7 +447,7 @@ different numbers, for example; the <span class="extract"><span class="extract-s
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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="function-syntax">CommandGrammars::get_parsing_grammar</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">CommandGrammars::get_parsing_grammar</span></span>:<br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a>, <a href="5-tpv.html#SP1_1">§1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::get_parsing_grammar</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">CommandGrammars::get_parsing_grammar</span></span>:<br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a>, <a href="5-tpv.html#SP1_1">§1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"cannot get CG for K_object"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-></span><span class="identifier-syntax">construct</span><span class="plain-syntax">-></span><span class="identifier-syntax">understand_as_values</span><span class="plain-syntax">;</span>
|
||||
|
@ -475,11 +475,11 @@ in which players consulted a biographical dictionary of the Meldrew family.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">consultation_gv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::prepare_consultation_cg</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">CommandGrammars::prepare_consultation_cg</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP18">§18</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">CommandGrammars::prepare_consultation_cg</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">CommandGrammars::prepare_consultation_cg</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP18">§18</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">consultation_gv</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="function-syntax">CommandGrammars::get_consultation_cg</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">CommandGrammars::get_consultation_cg</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP18">§18</a>, <a href="5-us.html#SP19_11">§19.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::get_consultation_cg</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">CommandGrammars::get_consultation_cg</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP18">§18</a>, <a href="5-us.html#SP19_11">§19.11</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">consultation_gv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">consultation_gv</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::cg_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CG_IS_CONSULT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">consultation_gv</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -491,7 +491,7 @@ property value used adjectivally like this can be given a CG.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_prn</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">CommandGrammars::for_prn</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::for_prn</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">CommandGrammars::for_prn</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">EitherOrProperties::get_parsing_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</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">EitherOrProperties::get_parsing_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::cg_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CG_IS_PROPERTY_NAME</span><span class="plain-syntax">);</span>
|
||||
|
@ -507,15 +507,15 @@ are not possible, but see <a href="5-cg.html#SP10" class="internal">CommandGramm
|
|||
</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">CommandGrammars::is_empty</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">CommandGrammars::is_empty</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP15_2">§15.2</a><br/>General Parsing Routines - <a href="5-gpr.html#SP4">§4</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::is_empty</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">CommandGrammars::is_empty</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP15_2">§15.2</a><br/>General Parsing Routines - <a href="5-gpr.html#SP4">§4</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="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="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</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><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">CommandGrammars::add_line</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">CommandGrammars::add_line</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19">§19</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">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">CommandGrammars::add_line</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">CommandGrammars::add_line</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19">§19</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">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="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">GRAMMAR</span><span class="plain-syntax">, </span><span class="string-syntax">"$G + line: $g\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</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">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#SP4" class="function-link"><span class="function-syntax">UnderstandLines::list_length</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">) >= </span><span class="constant-syntax">MAX_LINES_PER_GRAMMAR</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> (</span><a href="5-cgl.html#SP3" class="function-link"><span class="function-syntax">UnderstandLines::list_length</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">) >= </span><span class="constant-syntax">MAX_LINES_PER_GRAMMAR</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_TooManyGrammarLines</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"this command verb now has too many Understand possibilities"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that is, there are too many 'Understand \"whatever ...\" as ...' "</span>
|
||||
|
@ -524,7 +524,7 @@ are not possible, but see <a href="5-cg.html#SP10" class="internal">CommandGramm
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"together, perhaps by using slashes to combine alternative "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"wordings, or by defining new grammar tokens [in square brackets]."</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">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP4" class="function-link"><span class="function-syntax">UnderstandLines::list_add</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_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="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP3" class="function-link"><span class="function-syntax">UnderstandLines::list_add</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_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="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -533,7 +533,7 @@ This returns the kind if so, or <span class="extract"><span class="extract-synta
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::get_kind_matched</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">CommandGrammars::get_kind_matched</span></span>:<br/>Grammar Tokens - <a href="5-gt.html#SP11">§11</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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::get_kind_matched</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">CommandGrammars::get_kind_matched</span></span>:<br/>Grammar Tokens - <a href="5-gt.html#SP11">§11</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-dt.html#SP4" class="function-link"><span class="function-syntax">DeterminationTypes::get_single_kind</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">cg_type</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -547,13 +547,13 @@ the buck down to <a href="5-cgl.html" class="internal">Command Grammar Lines</a>
|
|||
</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">CommandGrammars::prepare</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">CommandGrammars::prepare</span></span>:<br/>Parsing Plugin - <a href="5-pp.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">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandGrammars::prepare</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">CommandGrammars::prepare</span></span>:<br/>Parsing Plugin - <a href="5-pp.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">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">Log::new_stage</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Slashing command grammar"</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>
|
||||
<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">slashed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</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">"Slashing $G\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP11" class="function-link"><span class="function-syntax">UnderstandLines::line_list_slash</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP10" class="function-link"><span class="function-syntax">UnderstandLines::line_list_slash</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">slashed</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">Log::new_stage</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Determining command grammar"</span><span class="plain-syntax">);</span>
|
||||
|
@ -575,13 +575,13 @@ recurses back here.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::determine</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">CommandGrammars::determine</span></span>:<br/><a href="5-cg.html#SP20">§20</a><br/>Grammar Tokens - <a href="5-gt.html#SP10_1">§10.1</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandGrammars::determine</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">CommandGrammars::determine</span></span>:<br/><a href="5-cg.html#SP20">§20</a><br/>Grammar Tokens - <a href="5-gt.html#SP10_1">§10.1</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">where_cg_created</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cg.html#SP21_1" class="named-paragraph-link"><span class="named-paragraph">If this CG produces a value we have determined already, return that</span><span class="named-paragraph-number">21.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cg.html#SP21_2" class="named-paragraph-link"><span class="named-paragraph">If recursion went impossibly deep, the CG grammar must be ill-founded</span><span class="named-paragraph-number">21.2</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">GRAMMAR_CONSTRUCTION</span><span class="plain-syntax">, </span><span class="string-syntax">"Determining $G\n"</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec_union</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP13" class="function-link"><span class="function-syntax">UnderstandLines::line_list_determine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</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_union</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP12" class="function-link"><span class="function-syntax">UnderstandLines::line_list_determine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">,</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="identifier-syntax">cg</span><span class="plain-syntax">, </span><a href="5-cg.html#SP5" class="function-link"><span class="function-syntax">CommandGrammars::cg_is_genuinely_verbal</span></a><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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">GRAMMAR_CONSTRUCTION</span><span class="plain-syntax">, </span><span class="string-syntax">"Result of verb $G is $P\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec_union</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
@ -628,7 +628,7 @@ sort once, so:
|
|||
<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::sort_command_grammar</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_first_line</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">cg</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_first_line</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP15" class="function-link"><span class="function-syntax">UnderstandLines::list_sort</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">sorted_first_line</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP14" class="function-link"><span class="function-syntax">UnderstandLines::list_sort</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">first_line</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -103,7 +103,7 @@ multiplicity <span class="extract"><span class="extract-syntax">TRUE</span></spa
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">multiplicity</span><span class="plain-syntax">; </span><span class="comment-syntax"> relevant for lines only: allow a multiple object here?</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">determination_type_term</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">DeterminationTypes::get_no_values_described</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">DeterminationTypes::get_no_values_described</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">DeterminationTypes::get_no_values_described</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">DeterminationTypes::get_no_values_described</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">gty</span><span class="plain-syntax">-></span><span class="element-syntax">no_values_described</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -113,7 +113,7 @@ which describes no values at all.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">determination_type</span><span class="plain-syntax"> </span><span class="function-syntax">DeterminationTypes::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">DeterminationTypes::new</span></span>:<br/>Command Grammars - <a href="5-cg.html#SP4">§4</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">determination_type</span><span class="plain-syntax"> </span><span class="function-syntax">DeterminationTypes::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">DeterminationTypes::new</span></span>:<br/>Command Grammars - <a href="5-cg.html#SP4">§4</a><br/>Command Grammar Lines - <a href="5-cgl.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">determination_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">gty</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">t</span><span class="plain-syntax"><</span><span class="constant-syntax">MAX_DETERMINATION_TYPE_TERMS</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">gty</span><span class="plain-syntax">.</span><span class="element-syntax">term</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">what</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -127,7 +127,7 @@ which describes no values at all.
|
|||
</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">DeterminationTypes::add_term</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">DeterminationTypes::add_term</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</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">DeterminationTypes::add_term</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">DeterminationTypes::add_term</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">multiple_flag</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gty</span><span class="plain-syntax">-></span><span class="element-syntax">no_values_described</span><span class="plain-syntax"> >= </span><span class="constant-syntax">MAX_DETERMINATION_TYPE_TERMS</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>
|
||||
|
@ -147,7 +147,7 @@ are convenient:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">DeterminationTypes::get_single_term</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">DeterminationTypes::get_single_term</span></span>:<br/>Command Grammars - <a href="5-cg.html#SP21_1">§21.1</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">DeterminationTypes::get_single_term</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">DeterminationTypes::get_single_term</span></span>:<br/>Command Grammars - <a href="5-cg.html#SP21_1">§21.1</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gty</span><span class="plain-syntax">-></span><span class="element-syntax">no_values_described</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">gty</span><span class="plain-syntax">-></span><span class="element-syntax">term</span><span class="plain-syntax">[0].</span><span class="element-syntax">what</span><span 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>
|
||||
|
@ -158,7 +158,7 @@ are convenient:
|
|||
<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">void</span><span class="plain-syntax"> </span><span class="function-syntax">DeterminationTypes::set_single_term</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">DeterminationTypes::set_single_term</span></span>:<br/>Command Grammars - <a href="5-cg.html#SP21_3">§21.3</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</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">DeterminationTypes::set_single_term</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">DeterminationTypes::set_single_term</span></span>:<br/>Command Grammars - <a href="5-cg.html#SP21_3">§21.3</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gty</span><span class="plain-syntax">-></span><span class="element-syntax">no_values_described</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -169,11 +169,11 @@ are convenient:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>The behaviour of this sorting function is documented in the discussion
|
||||
of GL sorting in <a href="5-cgl.html" class="internal">Command Grammar Lines</a>.
|
||||
of CGL sorting in <a href="5-cgl.html" class="internal">Command Grammar Lines</a>.
|
||||
</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">DeterminationTypes::must_precede</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">DeterminationTypes::must_precede</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty1</span><span class="plain-syntax">, </span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">DeterminationTypes::must_precede</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">DeterminationTypes::must_precede</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty1</span><span class="plain-syntax">, </span><span class="reserved-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">gty1</span><span class="plain-syntax">-></span><span class="element-syntax">no_values_described</span><span class="plain-syntax">) < (</span><span class="identifier-syntax">gty2</span><span class="plain-syntax">-></span><span class="element-syntax">no_values_described</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">gty1</span><span class="plain-syntax">-></span><span class="element-syntax">no_values_described</span><span class="plain-syntax">) > (</span><span class="identifier-syntax">gty2</span><span class="plain-syntax">-></span><span class="element-syntax">no_values_described</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>
|
||||
|
||||
|
|
|
@ -505,11 +505,11 @@ more complex). I suspect we will return to this.
|
|||
<ul class="endnotetexts"><li>This code is used in <a href="5-gpr.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>The head and tail routines can only be understood by knowing that the
|
||||
following code is used to reset the grammar-line parser after each failure
|
||||
of a GL to parse.
|
||||
of a CGL to parse.
|
||||
</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">UnderstandGeneralTokens::after_gl_failed</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">UnderstandGeneralTokens::after_gl_failed</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">label</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pluralised</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::after_gl_failed</span><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">label</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pluralised</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pluralised</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
|
@ -545,7 +545,7 @@ in which case it would need to be followed by a semi-colon.
|
|||
</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">UnderstandGeneralTokens::compile_parse_name_tail</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">UnderstandGeneralTokens::compile_parse_name_tail</span></span>:<br/><a href="5-gpr.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::compile_parse_name_tail</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">UnderstandGeneralTokens::compile_parse_name_tail</span></span>:<br/><a href="5-gpr.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</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">BREAK_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
|
@ -757,7 +757,7 @@ specific object.
|
|||
</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">UnderstandGeneralTokens::consider_visible_properties</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">UnderstandGeneralTokens::consider_visible_properties</span></span>:<br/><a href="5-gpr.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::consider_visible_properties</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">UnderstandGeneralTokens::consider_visible_properties</span></span>:<br/><a href="5-gpr.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">test_distinguishability</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">phase</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">test_distinguishability</span><span class="plain-syntax">) </span><span class="identifier-syntax">phase</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
|
@ -785,11 +785,11 @@ level, and to compile nothing to the file.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">visible_properties_code_written</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="comment-syntax"> persistent state used only here</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::start_considering_visible_properties</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">UnderstandGeneralTokens::start_considering_visible_properties</span></span>:<br/><a href="5-gpr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">phase</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::start_considering_visible_properties</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">UnderstandGeneralTokens::start_considering_visible_properties</span></span>:<br/><a href="5-gpr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">phase</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">visible_properties_code_written</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">UnderstandGeneralTokens::consider_visible_property</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">UnderstandGeneralTokens::consider_visible_property</span></span>:<br/><a href="5-gpr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::consider_visible_property</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">UnderstandGeneralTokens::consider_visible_property</span></span>:<br/><a href="5-gpr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pr</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">phase</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">conditional_vis</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
|
||||
|
@ -820,7 +820,7 @@ level, and to compile nothing to the file.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">conditional_vis</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">()); </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">()); }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::finish_considering_visible_properties</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">UnderstandGeneralTokens::finish_considering_visible_properties</span></span>:<br/><a href="5-gpr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">phase</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::finish_considering_visible_properties</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">UnderstandGeneralTokens::finish_considering_visible_properties</span></span>:<br/><a href="5-gpr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">phase</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">visible_properties_code_written</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phase</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="5-gpr.html#SP12" class="function-link"><span class="function-syntax">UnderstandGeneralTokens::finish_distinguishing_visible_properties</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
|
||||
|
@ -840,7 +840,7 @@ or vice versa, then they are distinguishable; and otherwise we revert to
|
|||
the I6 parser's standard algorithm, which looks at the <span class="extract"><span class="extract-syntax">name</span></span> property.
|
||||
</li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::begin_distinguishing_visible_properties</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">UnderstandGeneralTokens::begin_distinguishing_visible_properties</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::begin_distinguishing_visible_properties</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">UnderstandGeneralTokens::begin_distinguishing_visible_properties</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</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">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><span class="identifier-syntax">Emit::tree</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">EQ_BIP</span><span class="plain-syntax">);</span>
|
||||
|
@ -894,7 +894,7 @@ the I6 parser's standard algorithm, which looks at the <span class="extract"><sp
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::test_distinguish_visible_property</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">UnderstandGeneralTokens::test_distinguish_visible_property</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</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">UnderstandGeneralTokens::test_distinguish_visible_property</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">UnderstandGeneralTokens::test_distinguish_visible_property</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</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">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
|
@ -937,7 +937,7 @@ the I6 parser's standard algorithm, which looks at the <span class="extract"><sp
|
|||
<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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::distinguish_visible_property</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">UnderstandGeneralTokens::distinguish_visible_property</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::distinguish_visible_property</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">UnderstandGeneralTokens::distinguish_visible_property</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="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">"Distinguishing property %n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTProperties::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::code_comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
|
@ -1030,7 +1030,7 @@ the I6 parser's standard algorithm, which looks at the <span class="extract"><sp
|
|||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::finish_distinguishing_visible_properties</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">UnderstandGeneralTokens::finish_distinguishing_visible_properties</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::finish_distinguishing_visible_properties</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">UnderstandGeneralTokens::finish_distinguishing_visible_properties</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
|
@ -1050,7 +1050,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
|||
</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">UnderstandGeneralTokens::begin_parsing_visible_properties</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">UnderstandGeneralTokens::begin_parsing_visible_properties</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::begin_parsing_visible_properties</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">UnderstandGeneralTokens::begin_parsing_visible_properties</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::code_comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Match any number of visible property values"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
|
@ -1074,7 +1074,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::test_parse_visible_property</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">UnderstandGeneralTokens::test_parse_visible_property</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</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">UnderstandGeneralTokens::test_parse_visible_property</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">UnderstandGeneralTokens::test_parse_visible_property</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</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">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">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><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_truth_state</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
|
@ -1083,7 +1083,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">unique_pvp_counter</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">UnderstandGeneralTokens::parse_visible_property</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">UnderstandGeneralTokens::parse_visible_property</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::parse_visible_property</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">UnderstandGeneralTokens::parse_visible_property</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">visibility_level</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">"Parsing property %n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTProperties::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
|
@ -1314,7 +1314,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</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">UnderstandGeneralTokens::finish_parsing_visible_properties</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">UnderstandGeneralTokens::finish_parsing_visible_properties</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandGeneralTokens::finish_parsing_visible_properties</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">UnderstandGeneralTokens::finish_parsing_visible_properties</span></span>:<br/><a href="5-gpr.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::code_comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"try_from_wn is now advanced past any visible property values"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -87,7 +87,7 @@ and set for square-bracketed tokens such as <span class="extract"><span class="e
|
|||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">index</span></span> stores the GSB scoring contribution made by the token to the
|
||||
GL sorting algorithm.
|
||||
CGL sorting algorithm.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The <span class="extract"><span class="extract-syntax">grammar_token_code_ANNOT</span></span> annotation is meaningful only for parse nodes
|
||||
|
@ -189,7 +189,7 @@ out", a sequence of five lexical words.
|
|||
<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">UnderstandTokens::is_literal</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">UnderstandTokens::is_literal</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.11</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandTokens::is_literal</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">UnderstandTokens::is_literal</span></span>:<br/>Understand Sentences - <a href="5-us.html#SP19_11">§19.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="constant-syntax">grammar_token_literal_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -198,7 +198,7 @@ instance, permits the use of "all".
|
|||
</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">UnderstandTokens::is_multiple</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">UnderstandTokens::is_multiple</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandTokens::is_multiple</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">UnderstandTokens::is_multiple</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">grammar_token_code_ANNOT</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">MULTI_TOKEN_GTC:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTIINSIDE_TOKEN_GTC:</span>
|
||||
|
@ -212,7 +212,7 @@ instance, permits the use of "all".
|
|||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Text. </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">UnderstandTokens::is_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">UnderstandTokens::is_text</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandTokens::is_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">grammar_token_code_ANNOT</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">TOPIC_TOKEN_GTC:</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>
|
||||
|
@ -221,11 +221,11 @@ instance, permits the use of "all".
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. The special tokens. </b>Do not change any of these GTC numbers without first checking and updating
|
||||
the discussion of GL sorting in Grammar Lines:
|
||||
the discussion of CGL sorting in <a href="5-cgl.html" class="internal">Command Grammar Lines</a>:
|
||||
</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">UnderstandTokens::gsb_for_special_token</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">UnderstandTokens::gsb_for_special_token</span></span>:<br/><a href="5-gt.html#SP10_5">§10.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">gtc</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandTokens::gsb_for_special_token</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">UnderstandTokens::gsb_for_special_token</span></span>:<br/><a href="5-gt.html#SP10_5">§10.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">gtc</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">gtc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOUN_TOKEN_GTC:</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTI_TOKEN_GTC:</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>
|
||||
|
@ -259,7 +259,7 @@ the discussion of GL sorting in Grammar Lines:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="string-syntax">""</span><span class="plain-syntax">; </span><span class="comment-syntax"> to prevent a gcc error: never reached</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">UnderstandTokens::iname_for_special_token</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">UnderstandTokens::iname_for_special_token</span></span>:<br/><a href="5-gt.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">gtc</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">UnderstandTokens::iname_for_special_token</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">UnderstandTokens::iname_for_special_token</span></span>:<br/><a href="5-gt.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">gtc</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">gtc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOUN_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_NOUN_iname</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">MULTI_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_MULTI_iname</span><span class="plain-syntax">;</span>
|
||||
|
@ -294,7 +294,7 @@ to be used in I7: these are defined by the following routine.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">UnderstandTokens::kind_for_special_token</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">UnderstandTokens::kind_for_special_token</span></span>:<br/><a href="5-gt.html#SP10_5">§10.5</a>, <a href="5-gt.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">gtc</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">UnderstandTokens::kind_for_special_token</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">UnderstandTokens::kind_for_special_token</span></span>:<br/><a href="5-gt.html#SP10_5">§10.5</a>, <a href="5-gt.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">gtc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">gtc</span><span class="plain-syntax"> == </span><span class="constant-syntax">TOPIC_TOKEN_GTC</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -422,7 +422,7 @@ that nobody complained about what might have been a controversial change.
|
|||
</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">UnderstandTokens::incompatible_change_problem</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">UnderstandTokens::incompatible_change_problem</span></span>:<br/><a href="5-gt.html#SP9_4">§9.4</a>, <a href="5-gt.html#SP9_5">§9.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">token_tried</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">token_instead</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandTokens::incompatible_change_problem</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">UnderstandTokens::incompatible_change_problem</span></span>:<br/><a href="5-gt.html#SP9_4">§9.4</a>, <a href="5-gt.html#SP9_5">§9.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">token_tried</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">token_instead</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">token_better</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_text</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">token_tried</span><span class="plain-syntax">);</span>
|
||||
|
@ -485,7 +485,7 @@ look seriously at tokens is in Phase II.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">UnderstandTokens::determine</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">UnderstandTokens::determine</span></span>:<br/><a href="5-gt.html#SP11">§11</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">score</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">UnderstandTokens::determine</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">UnderstandTokens::determine</span></span>:<br/><a href="5-gt.html#SP11">§11</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">score</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="constant-syntax">grammar_token_literal_ANNOT</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>
|
||||
|
||||
|
@ -600,7 +600,7 @@ nothing else.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ol_loop_counter</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">UnderstandTokens::compile</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">UnderstandTokens::compile</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">,</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">UnderstandTokens::compile</span><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">failure_label</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</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>
|
||||
|
|
|
@ -108,7 +108,7 @@ for generating that is a little delicate.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">INTER2_CSEQ</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="5-gpr.html#SP4" class="function-link"><span class="function-syntax">UnderstandGeneralTokens::write_parse_name_routines</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="5-cgl.html#SP8" class="function-link"><span class="function-syntax">UnderstandLines::MistakeActionSub_routine</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTCommandGrammarLines::MistakeActionSub_routine</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="5-cg.html#SP20" class="function-link"><span class="function-syntax">CommandGrammars::prepare</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTCommandGrammars::compile_conditions</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="5-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::number</span></a><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -105,7 +105,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">x_s</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::new_kit</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">UnderstandValueTokens::new_kit</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP20">§20</a><br/>General Parsing Routines - <a href="5-gpr.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::new_kit</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">UnderstandValueTokens::new_kit</span></span>:<br/>General Parsing Routines - <a href="5-gpr.html#SP4">§4</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">gpr_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">.</span><span class="element-syntax">cur_addr_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">gprk</span><span class="plain-syntax">.</span><span class="element-syntax">cur_len_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -146,11 +146,11 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">range_words_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">"range_words"</span><span class="plain-syntax">, </span><span class="string-syntax">"call parameter: snippet length"</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">UnderstandValueTokens::add_original</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">UnderstandValueTokens::add_original</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::add_original</span><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"original_wn"</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">UnderstandValueTokens::add_standard_set</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">UnderstandValueTokens::add_standard_set</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::add_standard_set</span><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">group_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"group_wn"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">v_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"v"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">w_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"w"</span><span class="plain-syntax">);</span>
|
||||
|
@ -170,7 +170,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">x_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"x"</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">UnderstandValueTokens::add_parse_name_vars</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">UnderstandValueTokens::add_parse_name_vars</span></span>:<br/>General Parsing Routines - <a href="5-gpr.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::add_parse_name_vars</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">UnderstandValueTokens::add_parse_name_vars</span></span>:<br/>General Parsing Routines - <a href="5-gpr.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_wn_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_wn"</span><span class="plain-syntax">, </span><span class="string-syntax">"first word of text parsed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">group_wn_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">"group_wn"</span><span class="plain-syntax">, </span><span class="string-syntax">"first word matched against A/B/C/... disjunction"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">try_from_wn_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">"try_from_wn"</span><span class="plain-syntax">, </span><span class="string-syntax">"position to try matching from"</span><span class="plain-syntax">);</span>
|
||||
|
@ -186,7 +186,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">pass2_n_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">"pass2_n"</span><span class="plain-syntax">, </span><span class="string-syntax">"value of n recorded during pass 2"</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">UnderstandValueTokens::number</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">UnderstandValueTokens::number</span></span>:<br/>Parsing Plugin - <a href="5-pp.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">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::number</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">UnderstandValueTokens::number</span></span>:<br/>Parsing Plugin - <a href="5-pp.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="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">DECIMAL_TOKEN_INNER_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">Routines::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax"> = </span><a href="5-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -201,7 +201,7 @@ function togglePopup(material_id) {
|
|||
<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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::time</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">UnderstandValueTokens::time</span></span>:<br/>Parsing Plugin - <a href="5-pp.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">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::time</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">UnderstandValueTokens::time</span></span>:<br/>Parsing Plugin - <a href="5-pp.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="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">TIME_TOKEN_INNER_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">Routines::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax"> = </span><a href="5-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -219,7 +219,7 @@ function togglePopup(material_id) {
|
|||
<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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::truth_state</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">UnderstandValueTokens::truth_state</span></span>:<br/>Parsing Plugin - <a href="5-pp.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">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::truth_state</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">UnderstandValueTokens::truth_state</span></span>:<br/>Parsing Plugin - <a href="5-pp.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="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">TRUTH_STATE_TOKEN_INNER_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">Routines::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax"> = </span><a href="5-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -234,7 +234,7 @@ function togglePopup(material_id) {
|
|||
<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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::compile_type_gprs</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">UnderstandValueTokens::compile_type_gprs</span></span>:<br/>Parsing Plugin - <a href="5-pp.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">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::compile_type_gprs</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">UnderstandValueTokens::compile_type_gprs</span></span>:<br/>Parsing Plugin - <a href="5-pp.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">next_label</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">longest</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
|
||||
|
@ -273,7 +273,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure gpr_kit is accessed in 5/cgl, 5/gt, 5/gpr and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure gpr_kit is accessed in 5/gt, 5/gpr and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>§1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile body of kind GPR</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -874,7 +874,7 @@ we simply make any double-quoted text in <span class="extract"><span class="extr
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Text blocks. </b>And finally, here we perform a lengthy shopping list of checks for validity, but
|
||||
then in all cases we create a single new CG line with <a href="5-cgl.html#SP3" class="internal">UnderstandLines::new</a>
|
||||
then in all cases we create a single new CG line with <a href="5-cgl.html#SP2" class="internal">UnderstandLines::new</a>
|
||||
and add it to a suitably chosen CG with <a href="5-cg.html#SP18" class="internal">CommandGrammars::add_line</a>.
|
||||
</p>
|
||||
|
||||
|
@ -1162,13 +1162,13 @@ and add it to a suitably chosen CG with <a href="5-cg.html#SP18" class="internal
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP3" class="function-link"><span class="function-syntax">UnderstandLines::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</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="identifier-syntax">tokens</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><a href="5-cgl.html#SP2" class="function-link"><span class="function-syntax">UnderstandLines::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</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="identifier-syntax">tokens</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">reversed_reference</span><span class="plain-syntax">, </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">pluralised_reference</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">mistaken</span><span class="plain-syntax">) </span><a href="5-cgl.html#SP8" class="function-link"><span class="function-syntax">UnderstandLines::set_mistake</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">mistake_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">mistaken</span><span class="plain-syntax">) </span><a href="5-cgl.html#SP7" class="function-link"><span class="function-syntax">UnderstandLines::set_mistake</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">mistake_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">when_text</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP7" class="function-link"><span class="function-syntax">UnderstandLines::set_understand_when</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">when_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP6" class="function-link"><span class="function-syntax">UnderstandLines::set_understand_when</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">when_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Descriptions::is_qualified</span><span class="plain-syntax">(</span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">spec_reference</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP7" class="function-link"><span class="function-syntax">UnderstandLines::set_understand_prop</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP6" class="function-link"><span class="function-syntax">UnderstandLines::set_understand_prop</span></a><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">Propositions::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">Descriptions::to_proposition</span><span class="plain-syntax">(</span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">spec_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">"Line: $g\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
@ -1209,7 +1209,7 @@ and add it to a suitably chosen CG with <a href="5-cg.html#SP18" class="internal
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_VALUE:</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">"Add to command grammar of value $P: "</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">spec_reference</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP3" class="function-link"><span class="function-syntax">UnderstandLines::set_single_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">spec_reference</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP2" class="function-link"><span class="function-syntax">UnderstandLines::set_single_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">spec_reference</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP15" class="function-link"><span class="function-syntax">CommandGrammars::for_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">ur</span><span class="plain-syntax">-></span><span class="element-syntax">spec_reference</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">CG_IS_PROPERTY_NAME:</span>
|
||||
|
|
|
@ -111,8 +111,8 @@ the reader interact with them do not need this, and can deactivate the plugin.
|
|||
|
||||
<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 GLs, and
|
||||
an individual GL must belong to exactly one CG. There are five different
|
||||
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.
|
||||
|
@ -122,11 +122,11 @@ types of CG, differentiated mostly by the purpose to which the CG is put:
|
|||
</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 (GL) is a single possibility within a CG: for
|
||||
<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 GL is a list of tokens, and an individual token must belong
|
||||
to exactly one GL.
|
||||
</li><li>(c) A grammar token (GTOK) is a single particle of a GL: for
|
||||
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
|
||||
|
|
|
@ -298,7 +298,7 @@
|
|||
<li>
|
||||
<p class="sectionentry"><a href="5-cgl.html">
|
||||
<spon class="sectiontitle">Command Grammar Lines</span></a> -
|
||||
<span class="sectionpurpose">A grammar line is a list of tokens to specify a textual pattern. For example, the Inform source for a grammar line might be "take [something] out", which is a sequence of three tokens.</span></p>
|
||||
<span class="sectionpurpose">A CG line is a list of CG tokens to specify a textual pattern. For example, "take [something] out" is a CG line of three tokens.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="5-gt.html">
|
||||
|
|
|
@ -941,7 +941,7 @@ the source text in the application.
|
|||
</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">Index::link</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Index::link</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP7_11_2">§7.11.2</a>, <a href="2-li.html#SP8">§8</a><br/>Index Physical World - <a href="2-ipw.html#SP3_5">§3.5</a>, <a href="2-ipw.html#SP3_8">§3.8</a>, <a href="2-ipw.html#SP4">§4</a><br/>Kinds Index - <a href="2-ki.html#SP6">§6</a><br/>Index Extensions - <a href="2-ie.html#SP1">§1</a><br/>Instances - <a href="2-ins.html#SP5">§5</a><br/>Adjectives - <a href="2-adj.html#SP1">§1</a><br/>Variables - <a href="2-vrb.html#SP3">§3</a><br/>Inferences - <a href="2-inf.html#SP3">§3</a><br/>Figures - <a href="3-fgr.html#SP1">§1</a><br/>Sound Effects - <a href="3-se.html#SP1">§1</a><br/>External Files - <a href="3-ef.html#SP1">§1</a><br/>Spatial - <a href="3-spt.html#SP4">§4</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">§1.5.1.1</a>, <a href="3-scn.html#SP1_5_1_4_2">§1.5.1.4.2</a>, <a href="3-scn.html#SP1_5_1_4_3">§1.5.1.4.3</a><br/>Actions - <a href="3-act.html#SP1">§1</a><br/>Commands Index - <a href="3-ci.html#SP6">§6</a><br/>Spatial Map - <a href="4-sm.html#SP44">§44</a><br/>HTML Map - <a href="4-hm.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::link</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Index::link</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP7_11_2">§7.11.2</a>, <a href="2-li.html#SP8">§8</a><br/>Index Physical World - <a href="2-ipw.html#SP3_5">§3.5</a>, <a href="2-ipw.html#SP3_8">§3.8</a>, <a href="2-ipw.html#SP4">§4</a><br/>Kinds Index - <a href="2-ki.html#SP6">§6</a><br/>Index Extensions - <a href="2-ie.html#SP1">§1</a><br/>Instances - <a href="2-ins.html#SP5">§5</a><br/>Adjectives - <a href="2-adj.html#SP1">§1</a><br/>Variables - <a href="2-vrb.html#SP3">§3</a><br/>Inferences - <a href="2-inf.html#SP3">§3</a><br/>Figures - <a href="3-fgr.html#SP1">§1</a><br/>Sound Effects - <a href="3-se.html#SP1">§1</a><br/>External Files - <a href="3-ef.html#SP1">§1</a><br/>Spatial - <a href="3-spt.html#SP4">§4</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">§1.5.1.1</a>, <a href="3-scn.html#SP1_5_1_4_2">§1.5.1.4.2</a>, <a href="3-scn.html#SP1_5_1_4_3">§1.5.1.4.3</a><br/>Actions - <a href="3-act.html#SP1">§1</a><br/>Commands Index - <a href="3-ci.html#SP6">§6</a>, <a href="3-ci.html#SP7">§7</a>, <a href="3-ci.html#SP10">§10</a>, <a href="3-ci.html#SP11">§11</a><br/>Spatial Map - <a href="4-sm.html#SP44">§44</a><br/>HTML Map - <a href="4-hm.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP9" class="function-link"><span class="function-syntax">Index::link_to_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_location</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -973,7 +973,7 @@ page about the taking action.
|
|||
</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">Index::detail_link</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">Index::detail_link</span></span>:<br/>Actions - <a href="3-act.html#SP1">§1</a><br/>Commands Index - <a href="3-ci.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stub</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">down</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::detail_link</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">Index::detail_link</span></span>:<br/>Actions - <a href="3-act.html#SP1">§1</a><br/>Commands Index - <a href="3-ci.html#SP2_1">§2.1</a>, <a href="3-ci.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">stub</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">down</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=%s%d_%s.html"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">down</span><span class="plain-syntax">)?</span><span class="string-syntax">"Details/"</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">stub</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/Beneath.png"</span><span class="plain-syntax">);</span>
|
||||
|
@ -994,7 +994,7 @@ code.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::anchor</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">Index::anchor</span></span>:<br/><a href="2-ifs.html#SP17">§17</a>, <a href="2-ifs.html#SP18">§18</a><br/>Lexicon Index - <a href="2-li.html#SP7">§7</a><br/>Index Physical World - <a href="2-ipw.html#SP2">§2</a>, <a href="2-ipw.html#SP3_1">§3.1</a><br/>Variables - <a href="2-vrb.html#SP2">§2</a><br/>Bibliographic Data - <a href="3-bd.html#SP1">§1</a><br/>Scenes - <a href="3-scn.html#SP1_4">§1.4</a>, <a href="3-scn.html#SP1_5">§1.5</a><br/>Actions - <a href="3-act.html#SP1">§1</a><br/>HTML Map - <a href="4-hm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::anchor</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">Index::anchor</span></span>:<br/><a href="2-ifs.html#SP17">§17</a>, <a href="2-ifs.html#SP18">§18</a><br/>Lexicon Index - <a href="2-li.html#SP7">§7</a><br/>Index Physical World - <a href="2-ipw.html#SP2">§2</a>, <a href="2-ipw.html#SP3_1">§3.1</a><br/>Variables - <a href="2-vrb.html#SP2">§2</a><br/>Bibliographic Data - <a href="3-bd.html#SP1">§1</a><br/>Scenes - <a href="3-scn.html#SP1_4">§1.4</a>, <a href="3-scn.html#SP1_5">§1.5</a><br/>Actions - <a href="3-act.html#SP1">§1</a><br/>Commands Index - <a href="3-ci.html#SP7">§7</a><br/>HTML Map - <a href="4-hm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"name=%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -189,7 +189,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"hr"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>Typed commands leading to this action</b>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-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">UnderstandLines::index_list_with_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="identifier-syntax">command_parser_grammar_producing_this</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="3-ci.html#SP10" class="function-link"><span class="function-syntax">CommandsIndex::index_list_with_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="identifier-syntax">command_parser_grammar_producing_this</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>None</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-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">StackedVariables::owner_empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="identifier-syntax">action_variables</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -72,6 +72,8 @@ 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">index</a></li><li><a href="index.html#3">Chapter 3: Indexing for Plugins</a></li><li><b>Commands Index</b></li></ul></div>
|
||||
<p class="purpose">To construct the index of command verbs.</p>
|
||||
|
||||
<ul class="toc"><li><a href="3-ci.html#SP7">§7. Indexing by grammar</a></li><li><a href="3-ci.html#SP8">§8. Indexing by action</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The following modest structure is used for the indexing of command verbs,
|
||||
and is too deeply boring to comment upon. These are the headwords of commands
|
||||
which can be typed at run-time, like QUIT or INVENTORY. For indexing purposes,
|
||||
|
@ -118,7 +120,7 @@ we divide these headwords into five "natures":
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">vie</span><span class="plain-syntax">-></span><span class="element-syntax">next_alphabetically</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::verb_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">trueverb</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">CommandsIndex::verb_definition</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">CommandsIndex::verb_definition</span></span>:<br/><a href="3-ci.html#SP7">§7</a>, <a href="3-ci.html#SP10">§10</a>, <a href="3-ci.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">trueverb</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">p</span><span class="plain-syntax">[0] == </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[1] == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="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">trueverb</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
|
@ -141,7 +143,7 @@ we divide these headwords into five "natures":
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">command_index_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandsIndex::vie_new_from</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">CommandsIndex::vie_new_from</span></span>:<br/><a href="3-ci.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">headword</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nature</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">command_index_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">CommandsIndex::vie_new_from</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">CommandsIndex::vie_new_from</span></span>:<br/><a href="3-ci.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">headword</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nature</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">command_index_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vie</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">vie</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">command_index_entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">vie</span><span class="plain-syntax">-></span><span class="element-syntax">command_headword</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||
|
@ -152,7 +154,7 @@ we divide these headwords into five "natures":
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">vie</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">CommandsIndex::commands</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">CommandsIndex::commands</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::commands</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">CommandsIndex::commands</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">command_index_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vie</span><span class="plain-syntax">, *</span><span class="identifier-syntax">vie2</span><span class="plain-syntax">, *</span><span class="identifier-syntax">last_vie2</span><span class="plain-syntax">, *</span><span class="identifier-syntax">list_start</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">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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">head_letter</span><span class="plain-syntax">;</span>
|
||||
|
@ -218,7 +220,7 @@ we divide these headwords into five "natures":
|
|||
<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">CommandsIndex::alphabetical</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">CommandsIndex::alphabetical</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::alphabetical</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">CommandsIndex::alphabetical</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">nr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> **</span><span class="identifier-syntax">sorted</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Memory::calloc</span><span class="plain-syntax">(</span><span class="identifier-syntax">nr</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *), </span><span class="constant-syntax">INDEX_SORTING_MREASON</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sorted</span><span class="plain-syntax">) {</span>
|
||||
|
@ -292,7 +294,7 @@ we divide these headwords into five "natures":
|
|||
</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">CommandsIndex::compare_action_names</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">CommandsIndex::compare_action_names</span></span>:<br/><a href="3-ci.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ent1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ent2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::compare_action_names</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">CommandsIndex::compare_action_names</span></span>:<br/><a href="3-ci.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ent1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ent2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ent1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ent2</span><span 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::strcmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">ActionNameNames::tensed</span><span class="plain-syntax">((</span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">an1</span><span class="plain-syntax">, </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">ActionNameNames::tensed</span><span class="plain-syntax">((</span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">an2</span><span class="plain-syntax">, </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">));</span>
|
||||
|
@ -301,7 +303,7 @@ we divide these headwords into five "natures":
|
|||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::page</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">CommandsIndex::page</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::page</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">CommandsIndex::page</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">par_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">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">heading</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_area</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -315,7 +317,7 @@ we divide these headwords into five "natures":
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">f</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</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">CommandsIndex::detail_pages</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">CommandsIndex::detail_pages</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP8">§8</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">CommandsIndex::detail_pages</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">CommandsIndex::detail_pages</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="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">heading</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_area</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -338,7 +340,7 @@ we divide these headwords into five "natures":
|
|||
<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">CommandsIndex::tokens</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">CommandsIndex::tokens</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::tokens</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">CommandsIndex::tokens</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"In addition to the tokens listed below, any description of an object "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"or value can be used: for example, \"[number]\" matches text like 127 or "</span>
|
||||
|
@ -353,7 +355,7 @@ we divide these headwords into five "natures":
|
|||
<span class="plain-syntax"> </span><a href="3-ci.html#SP6" class="function-link"><span class="function-syntax">CommandsIndex::index_tokens</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">CommandsIndex::index_for_extension</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">CommandsIndex::index_for_extension</span></span>:<br/>Index Extensions - <a href="2-ie.html#SP2_6">§2.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sf</span><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">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::index_for_extension</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">CommandsIndex::index_for_extension</span></span>:<br/>Index Extensions - <a href="2-ie.html#SP2_6">§2.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sf</span><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="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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">kc</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</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">action_name</span><span class="plain-syntax">)</span>
|
||||
|
@ -364,9 +366,9 @@ we divide these headwords into five "natures":
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>The "Commands available to the player" portion of the Actions index page
|
||||
is, in effect, an alphabetised merge of the GLs found within the command CGs.
|
||||
GLs for the "no verb verb" appear under the special headword "0" (which
|
||||
is not displayed); otherwise GLs appear under the main command word, and
|
||||
is, in effect, an alphabetised merge of the CGLs found within the command CGs.
|
||||
CGLs for the "no verb verb" appear under the special headword "0" (which
|
||||
is not displayed); otherwise CGLs appear under the main command word, and
|
||||
aliases are shown with references like: "drag", same as "pull".
|
||||
</p>
|
||||
|
||||
|
@ -376,7 +378,7 @@ needed.
|
|||
</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">CommandsIndex::make_command_index_entries</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">CommandsIndex::make_command_index_entries</span></span>:<br/><a href="3-ci.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="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::make_command_index_entries</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">CommandsIndex::make_command_index_entries</span></span>:<br/><a href="3-ci.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="identifier-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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_COMMAND</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">first_line</span><span 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">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">command</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ci.html#SP2" class="function-link"><span class="function-syntax">CommandsIndex::vie_new_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"0"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="constant-syntax">NORMAL_COMMAND</span><span class="plain-syntax">);</span>
|
||||
|
@ -387,11 +389,11 @@ needed.
|
|||
<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">CommandsIndex::index_normal</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">CommandsIndex::index_normal</span></span>:<br/><a href="3-ci.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="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">headword</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">UnderstandLines::sorted_list_index_normal</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">sorted_first_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">headword</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::index_normal</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">CommandsIndex::index_normal</span></span>:<br/><a href="3-ci.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="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">headword</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ci.html#SP7" class="function-link"><span class="function-syntax">CommandsIndex::sorted_list_index_normal</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">sorted_first_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">headword</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">CommandsIndex::index_alias</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">CommandsIndex::index_alias</span></span>:<br/><a href="3-ci.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="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">headword</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::index_alias</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">CommandsIndex::index_alias</span></span>:<br/><a href="3-ci.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="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">headword</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">"&quot;%S&quot;, <i>same as</i> &quot;%N&quot;"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">headword</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">command</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">link</span><span class="plain-syntax">)</span>
|
||||
|
@ -404,7 +406,7 @@ needed.
|
|||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::index_tokens</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">CommandsIndex::index_tokens</span></span>:<br/><a href="3-ci.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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::index_tokens</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">CommandsIndex::index_tokens</span></span>:<br/><a href="3-ci.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="plain-syntax"> </span><a href="3-ci.html#SP6" class="function-link"><span class="function-syntax">CommandsIndex::index_tokens_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="string-syntax">"anybody"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"someone_token"</span><span class="plain-syntax">, </span><span class="string-syntax">"same as \"[someone]\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ci.html#SP6" class="function-link"><span class="function-syntax">CommandsIndex::index_tokens_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="string-syntax">"anyone"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"someone_token"</span><span class="plain-syntax">, </span><span class="string-syntax">"same as \"[someone]\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ci.html#SP6" class="function-link"><span class="function-syntax">CommandsIndex::index_tokens_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="string-syntax">"anything"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"things_token"</span><span class="plain-syntax">, </span><span class="string-syntax">"same as \"[thing]\""</span><span class="plain-syntax">);</span>
|
||||
|
@ -434,17 +436,154 @@ needed.
|
|||
<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">help</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><a href="2-dr.html#SP10" class="function-link"><span class="function-syntax">Index::DocReferences::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">help</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">explanation</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">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-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">defns</span><span class="plain-syntax">) </span><span class="identifier-syntax">UnderstandLines::index_list_for_token</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">defns</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">defns</span><span class="plain-syntax">) </span><a href="3-ci.html#SP11" class="function-link"><span class="function-syntax">CommandsIndex::index_list_for_token</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">defns</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">CommandsIndex::index_command_aliases</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">CommandsIndex::index_command_aliases</span></span>:<br/><a href="3-ci.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="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::index_command_aliases</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">CommandsIndex::index_command_aliases</span></span>:<br/><a href="3-ci.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="identifier-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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">no_aliased_commands</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">n</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"/%N"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">aliased_command</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">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">cg_line_indexing_data</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_with_action</span><span class="plain-syntax">; </span><span class="comment-syntax"> used when indexing actions</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">belongs_to_cg</span><span class="plain-syntax">; </span><span class="comment-syntax"> similarly, used only in indexing</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">cg_line_indexing_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">cg_line_indexing_data</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsIndex::new_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</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">cg_line_indexing_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">cglid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cglid</span><span class="plain-syntax">.</span><span class="identifier-syntax">belongs_to_cg</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">cglid</span><span class="plain-syntax">.</span><span class="identifier-syntax">next_with_action</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">cglid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure cg_line_indexing_data is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Indexing by grammar. </b>This is the more obvious form of indexing: we show the grammar lines which
|
||||
make up an individual CGL. (For instance, this is used in the Actions index
|
||||
to show the grammar for an individual command word, by calling the routine
|
||||
below for that command word's CG.) Such an index list is done in sorted
|
||||
order, so that the order of appearance in the index corresponds to the
|
||||
order of parsing — this is what the reader of the index is interested in.
|
||||
</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">CommandsIndex::sorted_list_index_normal</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">CommandsIndex::sorted_list_index_normal</span></span>:<br/><a href="3-ci.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list_head</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">headword</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">list_head</span><span class="plain-syntax">; </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">; </span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">sorted_next_line</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ci.html#SP7" class="function-link"><span class="function-syntax">CommandsIndex::cgl_index_normal</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">headword</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">CommandsIndex::cgl_index_normal</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">headword</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">resulting_action</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP11" class="function-link"><span class="function-syntax">Index::anchor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">headword</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</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="identifier-syntax">HTML::begin_colour</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">"800000"</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">"&quot;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ci.html#SP2" class="function-link"><span class="function-syntax">CommandsIndex::verb_definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_text</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">headword</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&quot;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP9" class="function-link"><span class="function-syntax">Index::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_text</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">" - <i>%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ActionNameNames::tensed</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">IS_TENSE</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP10" class="function-link"><span class="function-syntax">Index::detail_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"A"</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</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">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">reversed</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" (reversed)"</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">"</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">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="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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. Indexing by action. </b>Grammar lines are typically indexed twice: the other time is when all
|
||||
grammar lines belonging to a given action are tabulated. Special linked
|
||||
lists are kept for this purpose, and this is where we unravel them and
|
||||
print to the index. The question of sorted vs unsorted is meaningless
|
||||
here, since the CGLs appearing in such a list will typically belong to
|
||||
several different CGs. (As it happens, they appear in order of creation,
|
||||
i.e., in source text order.)
|
||||
</p>
|
||||
|
||||
<p class="commentary">Tiresomely, all of this means that we need to store "uphill" pointers
|
||||
in CGLs: back up to the CGs that own them. The following routine does
|
||||
this for a whole list of CGLs:
|
||||
</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">CommandsIndex::list_assert_ownership</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list_head</span><span class="plain-syntax">, </span><span class="identifier-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">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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">list_head</span><span class="plain-syntax">; </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">; </span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">next_line</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">belongs_to_cg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>And this routine accumulates the per-action lists of CGLs:
|
||||
</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">CommandsIndex::list_with_action_add</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list_head</span><span class="plain-syntax">, </span><span class="identifier-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">list_head</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 add to null action 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">list_head</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">next_with_action</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">list_head</span><span class="plain-syntax"> = </span><span class="identifier-syntax">list_head</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">next_with_action</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">list_head</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">next_with_action</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Finally, here we index an action list of CGLs, each getting a line in
|
||||
the HTML index.
|
||||
</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">CommandsIndex::index_list_with_action</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">CommandsIndex::index_list_with_action</span></span>:<br/>Actions - <a href="3-act.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">said_something</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">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</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">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">belongs_to_cg</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">VW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CommandGrammars::get_verb_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">belongs_to_cg</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">trueverb</span><span 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">VW</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">trueverb</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">VW</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&quot;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ci.html#SP2" class="function-link"><span class="function-syntax">CommandsIndex::verb_definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_text</span><span class="plain-syntax">), </span><span class="identifier-syntax">trueverb</span><span class="plain-syntax">, </span><span class="identifier-syntax">VW</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">"&quot;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP9" class="function-link"><span class="function-syntax">Index::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">reversed</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" <i>reversed</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">said_something</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">trueverb</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">next_with_action</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">said_something</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>And the same, but more simply:
|
||||
</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">CommandsIndex::index_list_for_token</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">CommandsIndex::index_list_for_token</span></span>:<br/><a href="3-ci.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</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">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">belongs_to_cg</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">VW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CommandGrammars::get_verb_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">indexing_data</span><span class="plain-syntax">.</span><span class="element-syntax">belongs_to_cg</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">trueverb</span><span 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">VW</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">trueverb</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">VW</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">k</span><span class="plain-syntax">++ == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"="</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"or"</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">" &quot;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ci.html#SP2" class="function-link"><span class="function-syntax">CommandsIndex::verb_definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_text</span><span class="plain-syntax">), </span><span class="identifier-syntax">trueverb</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&quot;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP9" class="function-link"><span class="function-syntax">Index::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">reversed</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" <i>reversed</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</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">trueverb</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">sorted_next_line</span><span class="plain-syntax">;</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="3-act.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progresssection"><a href="3-tm.html">tm</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresscurrent">ci</li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="4-sg.html">❯</a></li></ul></div>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -81,7 +81,7 @@ already been set up, or not. Here's not:
|
|||
</p>
|
||||
|
||||
<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/>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></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/>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#SP1">§1</a>, <a href="5-cgl.html#SP7">§7</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>
|
||||
</pre>
|
||||
|
@ -140,7 +140,7 @@ did not.
|
|||
</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">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/>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></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/>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#SP1">§1</a>, <a href="5-cgl.html#SP7">§7</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">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>
|
||||
|
|
|
@ -502,7 +502,7 @@ infrastructure, and we access it with a single call.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-scn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-los.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-scn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-los.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -911,7 +911,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ap.html#SP7">§7</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresscurrent">ap</li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-gng.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresscurrent">ap</li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-gng.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -142,7 +142,7 @@
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-bck.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-rgn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-rgn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -211,7 +211,7 @@ around it, in byte-accessible memory.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ef.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresscurrent">bd</li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-spt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ef.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresscurrent">bd</li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-spt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -209,7 +209,7 @@ in the final I6 output.
|
|||
<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="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_PROPERTY_NAME</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> makes routines for use in </span><span class="extract"><span class="extract-syntax">parse_name</span></span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">UnderstandLines::compile_slash_gprs</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammarLines::compile_slash_gprs</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>Some tokens require suitable I6 routines to have already been compiled,
|
||||
|
@ -289,9 +289,9 @@ specified for all things. (This mimics I6 class-to-instance inheritance.)
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::cg_compile_lines</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">RTCommandGrammars::cg_compile_lines</span></span>:<br/><a href="5-cg.html#SP5">§5</a>, <a href="5-cg.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-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">UnderstandLines::list_assert_ownership</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">first_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> Mark for later indexing</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandGrammars::sort_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> Phase III for the GLs in the CG happens here</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">UnderstandLines::sorted_line_list_compile</span><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">sorted_first_line</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandsIndex::list_assert_ownership</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">first_line</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> Mark for later indexing</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandGrammars::sort_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> Phase III for the CGLs in the CG happens here</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammarLines::sorted_line_list_compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">sorted_first_line</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">CommandGrammars::cg_is_genuinely_verbal</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">)); </span><span class="comment-syntax"> And Phase IV here</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -317,7 +317,7 @@ next priority, and so on up the hierarchy.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_cg_created</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">UnderstandLines::reset_labels</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP3" class="function-link"><span class="function-syntax">RTCommandGrammarLines::reset_labels</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</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">CG_IS_COMMAND:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::synoptic_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COMMANDS_HAP</span><span class="plain-syntax">);</span>
|
||||
|
@ -425,17 +425,17 @@ next priority, and so on up the hierarchy.
|
|||
<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="identifier-syntax">first_line</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">GRAMMAR</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling command grammar $G\n"</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">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_cg_created</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">UnderstandLines::reset_labels</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP3" class="function-link"><span class="function-syntax">RTCommandGrammarLines::reset_labels</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">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CG_IS_VALUE</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"not iv"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cg.html#SP6" class="function-link"><span class="function-syntax">RTCommandGrammars::cg_compile_lines</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::emit_determination_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::emit_determination_type</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">RTCommandGrammars::emit_determination_type</span></span>:<br/>Command Grammar Lines - <a href="5-cgl.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">gty</span><span class="plain-syntax">-></span><span class="identifier-syntax">term</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">what</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gng.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresscurrent">cg</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gng.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresscurrent">cg</li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-cgl.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
708
docs/runtime-module/5-cgl.html
Normal file
708
docs/runtime-module/5-cgl.html
Normal file
|
@ -0,0 +1,708 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Command Grammar Lines</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">runtime</span></a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Command Grammar Lines' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">runtime</a></li><li><a href="index.html#5">Chapter 5: Plugin Support</a></li><li><b>Command Grammar Lines</b></li></ul></div>
|
||||
<p class="purpose">Runtime support for CGLs.</p>
|
||||
|
||||
<ul class="toc"><li><a href="5-cgl.html#SP2">§2. Phase IV: Compile Grammar</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">cg_line_compilation_data</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">suppress_compilation</span><span class="plain-syntax">; </span><span class="comment-syntax"> has been compiled in a single I6 grammar token already?</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cond_token_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> for its </span><span class="extract"><span class="extract-syntax">Cond_Token_*</span></span><span class="comment-syntax"> routine, if any</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">mistake_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> for its </span><span class="extract"><span class="extract-syntax">Mistake_Token_*</span></span><span class="comment-syntax"> routine, if any</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">cg_line_compilation_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">cg_line_compilation_data</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::new_cd</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</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">cg_line_compilation_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">cglcd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cglcd</span><span class="plain-syntax">.</span><span class="identifier-syntax">suppress_compilation</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">cglcd</span><span class="plain-syntax">.</span><span class="identifier-syntax">cond_token_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">cglcd</span><span class="plain-syntax">.</span><span class="identifier-syntax">mistake_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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cglcd</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">RTCommandGrammarLines::set_mistake</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">MW</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">mistake_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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MISTAKES_HAP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">mistake_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MISTAKE_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</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">RTCommandGrammarLines::cgl_compile_mistake_token_as_needed</span><span class="plain-syntax">(</span><span class="identifier-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">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistaken</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">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">mistake_iname</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_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_object</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">ACTOR_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_object</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">PLAYER_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_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">GPR_FAIL_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">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_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">UNDERSTAND_AS_MISTAKE_NUMBER_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="identifier-syntax">inter_ti</span><span class="plain-syntax">) (100 + </span><span class="identifier-syntax">cgl</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="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">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">GPR_PREPOSITION_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><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>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::cgl_compile_extra_token_for_mistake</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">RTCommandGrammarLines::cgl_compile_extra_token_for_mistake</span></span>:<br/><a href="5-cgl.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistaken</span><span 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_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_COMMAND</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">mistake_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"CGLs may only be mistaken in command grammar"</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="identifier-syntax">MistakeAction_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::cgl_compile_result_of_mistake</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">RTCommandGrammarLines::cgl_compile_result_of_mistake</span></span>:<br/><a href="5-cgl.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-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">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistaken</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">MistakeAction_iname</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 MistakeAction yet"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_RESULT_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">MistakeAction_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">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::MistakeActionSub_routine</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">MAP</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::synoptic_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SACTIONS_HAP</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><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MISTAKEACTIONSUB_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">MAP</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">SWITCH_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">UNDERSTAND_AS_MISTAKE_NUMBER_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">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="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_line</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistaken</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_grammar_specified</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistake_response_text</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::new_UNKNOWN</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistake_response_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-value>(cgl-></span><span class="identifier-syntax">mistake_response_text</span><span class="plain-syntax">)) </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::new_UNKNOWN</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistake_response_text</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">CASE_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="identifier-syntax">inter_ti</span><span class="plain-syntax">) (100+</span><span class="identifier-syntax">cgl</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="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">PARSERERROR_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">Specifications::Compiler::emit_constant_to_kind_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="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="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">DEFAULT_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::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">PRINT_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_text</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">I</span><span class="string-syntax">"I didn't understand that sentence.\n"</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::rtrue</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::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::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_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::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
|
||||
<span class="plain-syntax"> </span><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><span class="identifier-syntax">MistakeAction_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MISTAKEACTION_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">MAP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_pseudo_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">MistakeAction_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_action_name</span><span class="plain-syntax">, </span><span class="constant-syntax">10000</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">MistakeAction_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">ACTION_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</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">MistakeAction_iname</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">RTCommandGrammarLines::cgl_compile_condition_token_as_needed</span><span class="plain-syntax">(</span><span class="identifier-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">UnderstandLines::conditional</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">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_grammar_specified</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COND_TOKENS_HAP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cond_token_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CONDITIONAL_TOKEN_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</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">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cond_token_iname</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">UnderstandLines::get_understand_cond</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">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">understand_when_prop</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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">AND_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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_truth_state</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">) </span><span class="identifier-syntax">Calculus::Deferrals::emit_test_of_proposition</span><span class="plain-syntax">(</span><span class="identifier-syntax">Rvalues::new_self_object_constant</span><span class="plain-syntax">(), </span><span class="identifier-syntax">prop</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prop</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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::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">GPR_PREPOSITION_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="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">GPR_FAIL_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><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>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::cgl_compile_extra_token_for_condition</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">RTCommandGrammarLines::cgl_compile_extra_token_for_condition</span></span>:<br/><a href="5-cgl.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_label</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">UnderstandLines::conditional</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">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cond_token_iname</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">"CGL cond token not ready"</span><span 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_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_COMMAND</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cond_token_iname</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">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::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><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cond_token_iname</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">GPR_FAIL_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">JUMP_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::lab</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">current_label</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="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure cg_line_compilation_data is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Phase IV: Compile Grammar. </b>At this level we compile the list of CGLs in sorted order: this is what the
|
||||
sorting was all for. In certain cases, we skip any CGLs marked as "one word":
|
||||
these are cases arising from, e.g., "Understand "frog" as the toad.",
|
||||
where we noticed that the CGL was a single word and included it in the <span class="extract"><span class="extract-syntax">name</span></span>
|
||||
property instead. This is faster and more flexible, besides writing tidier
|
||||
code.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The need for this is not immediately obvious. After all, shouldn't we have
|
||||
simply deleted the CGL in the first place, rather than leaving it in but
|
||||
marking it? The answer is no, because of the way inheritance works: values
|
||||
of the <span class="extract"><span class="extract-syntax">name</span></span> property accumulate from class to instance in I6, since
|
||||
<span class="extract"><span class="extract-syntax">name</span></span> is additive, but grammar doesn't.
|
||||
</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">RTCommandGrammarLines::sorted_line_list_compile</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">RTCommandGrammarLines::sorted_line_list_compile</span></span>:<br/>Command Grammars - <a href="5-cg.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list_head</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">genuinely_verbal</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">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">list_head</span><span class="plain-syntax">; </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">; </span><span class="identifier-syntax">cgl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">sorted_next_line</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">suppress_compilation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP4" class="function-link"><span class="function-syntax">RTCommandGrammarLines::compile_cg_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">genuinely_verbal</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The following apparently global variables are used to provide a persistent
|
||||
state for the routine below, but are not accessed elsewhere. The label
|
||||
counter is reset at the start of each CG's compilation, though this is a
|
||||
purely cosmetic effect.
|
||||
</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">current_grammar_block</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">current_label</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">GV_IS_VALUE_instance_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::reset_labels</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">RTCommandGrammarLines::reset_labels</span></span>:<br/>Command Grammars - <a href="5-cg.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="identifier-syntax">current_label</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</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>As fancy as the following routine may look, it contains very little.
|
||||
What complexity there is comes from the fact that command CGs are compiled
|
||||
very differently to all others (most grammars are compiled in "code mode",
|
||||
generating procedural I6 statements, but command CGs are compiled to lines
|
||||
in <span class="extract"><span class="extract-syntax">Verb</span></span> directives) and that CGLs resulting in actions (i.e., CGLs in
|
||||
command CGs) have not yet been type-checked, whereas all others have.
|
||||
</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">RTCommandGrammarLines::compile_cg_line</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">RTCommandGrammarLines::compile_cg_line</span></span>:<br/><a href="5-cgl.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">genuinely_verbal</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">pn</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">token_values</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">token_value_kinds</span><span class="plain-syntax">[2];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">, </span><span class="identifier-syntax">consult_mode</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</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling grammar line: $g\n"</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">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_grammar_specified</span><span 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_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_COMMAND</span><span class="plain-syntax">) </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_CONSULT</span><span class="plain-syntax">) </span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg_is</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">CG_IS_COMMAND:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_TOKEN:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_CONSULT:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_SUBJECT:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_VALUE:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_PROPERTY_NAME:</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">"tried to compile unknown CG type"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_grammar_block</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token_values</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><2; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</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">code_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_DIVIDER_iname</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">fail_label</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">gprk</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">L</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">L</span><span class="plain-syntax">, </span><span class="string-syntax">".Fail_%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_label</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fail_label</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::reserve_label</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">L</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">L</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_extra_token_for_condition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">fail_label</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_extra_token_for_mistake</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">tokens</span><span class="plain-syntax">-></span><span class="element-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">genuinely_verbal</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">slash_class_ANNOT</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">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_SlashedCommand</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"at present you're not allowed to use a / between command "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"words at the start of a line"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"so 'put/interpose/insert [something]' is out."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">; </span><span class="comment-syntax"> skip command word: the </span><span class="extract"><span class="extract-syntax">Verb</span></span><span class="comment-syntax"> header contains it already</span>
|
||||
<span 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_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_VALUE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">GV_IS_VALUE_instance_mode</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">instance_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::emit_determination_type</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">cgl_type</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="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn_from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">, *</span><span class="identifier-syntax">pn_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn_from</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">pn</span><span class="plain-syntax">; </span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) </span><span class="identifier-syntax">pn_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP6" class="function-link"><span class="function-syntax">RTCommandGrammarLines::compile_token_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax">, &</span><span class="identifier-syntax">token_values</span><span class="plain-syntax">, </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">fail_label</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">cg_is</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">CG_IS_COMMAND:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-cgl.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_result_of_mistake</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_RESULT_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_action_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">resulting_action</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">reversed</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">token_values</span><span class="plain-syntax"> < </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_CantReverseOne</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"you can't use a 'reversed' action when you supply fewer "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"than two values for it to apply to"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"since reversal is the process of exchanging them."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">swap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[0];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[1];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">swap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_REVERSE_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ActionSemantics::check_valid_application</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">resulting_action</span><span class="plain-syntax">, </span><span class="identifier-syntax">token_values</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token_value_kinds</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">CG_IS_PROPERTY_NAME:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_TOKEN:</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_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">gprk</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::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::place_label</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">fail_label</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">gprk</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_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">GPR_PREPOSITION_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::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">WN_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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_wn_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="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">CG_IS_CONSULT:</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">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><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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">range_words_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">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::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">MINUS_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">WN_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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">range_from_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::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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">range_words_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::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_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">gprk</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::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::place_label</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">fail_label</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">gprk</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_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">GPR_PREPOSITION_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::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">WN_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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_wn_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="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">CG_IS_SUBJECT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">UnderstandGeneralTokens::after_gl_failed</span><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">fail_label</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">pluralised</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">CG_IS_VALUE:</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">PARSED_NUMBER_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="5-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::emit_determination_type</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">cgl_type</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::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_object</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">GPR_NUMBER_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::place_label</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">fail_label</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">WN_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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">original_wn_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="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">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_VALUE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">GV_IS_VALUE_instance_mode</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="plain-syntax"> </span><span class="identifier-syntax">current_label</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
|
||||
<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">slash_gpr</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">first_choice</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">last_choice</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sgpr_iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">slash_gpr</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure slash_gpr is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::compile_token_line</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">RTCommandGrammarLines::compile_token_line</span></span>:<br/><a href="5-cgl.html#SP4">§4</a>, <a href="5-cgl.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn_to</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">token_values</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">group_wn_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fail_label</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">lexeme_equivalence_class</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">alternative_number</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">empty_text_allowed_in_lexeme</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">next_reserved_label</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_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eog_reserved_label</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (; </span><span class="identifier-syntax">pn</span><span class="plain-syntax">; </span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">UnderstandTokens::is_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">UnderstandTokens::is_literal</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="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_TextFollowedBy</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"a '[text]' token must either match the end of some text, or "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"be followed by definitely known wording"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"since otherwise the run-time parser isn't good enough to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"make sense of things."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::get_grammar_token_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CG_IS_SUBJECT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_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">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_GrammarObjectlessRelation</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"a grammar token in an 'Understand...' can only be based "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"on a relation if it is to understand the name of a room or thing"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"since otherwise there is nothing for the relation to be with."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">continue</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="identifier-syntax">first_token_in_lexeme</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">last_token_in_lexeme</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">slash_class_ANNOT</span><span class="plain-syntax">) != </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="comment-syntax"> in a multi-token lexeme</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">slash_class_ANNOT</span><span class="plain-syntax">) !=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">slash_class_ANNOT</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">last_token_in_lexeme</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">slash_class_ANNOT</span><span class="plain-syntax">) != </span><span class="identifier-syntax">lexeme_equivalence_class</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">first_token_in_lexeme</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">empty_text_allowed_in_lexeme</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">slash_dash_dash_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lexeme_equivalence_class</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">slash_class_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">first_token_in_lexeme</span><span class="plain-syntax">) </span><span class="identifier-syntax">alternative_number</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">alternative_number</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> { </span><span class="comment-syntax"> in a single-token lexeme</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">lexeme_equivalence_class</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">first_token_in_lexeme</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">last_token_in_lexeme</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">empty_text_allowed_in_lexeme</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">alternative_number</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">jump_on_fail</span><span class="plain-syntax"> = </span><span class="identifier-syntax">fail_label</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lexeme_equivalence_class</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">code_mode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">first_token_in_lexeme</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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">group_wn_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">WN_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">next_reserved_label</span><span class="plain-syntax">) </span><span class="identifier-syntax">Produce::place_label</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">next_reserved_label</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">L</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">L</span><span class="plain-syntax">, </span><span class="string-syntax">".group_%d_%d_%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_grammar_block</span><span class="plain-syntax">, </span><span class="identifier-syntax">lexeme_equivalence_class</span><span class="plain-syntax">, </span><span class="identifier-syntax">alternative_number</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">next_reserved_label</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::reserve_label</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">L</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">L</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">WN_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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">group_wn_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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">last_token_in_lexeme</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">empty_text_allowed_in_lexeme</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">jump_on_fail</span><span class="plain-syntax"> = </span><span class="identifier-syntax">next_reserved_label</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">empty_text_allowed_in_lexeme</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">code_mode</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">slash_gpr</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sgpr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">slash_gpr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">first_choice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</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">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">slash_class_ANNOT</span><span class="plain-syntax">) ==</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">slash_class_ANNOT</span><span class="plain-syntax">))) </span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">last_choice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::local_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SLASH_TOKENS_HAP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">sgpr_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SLASH_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">sgpr_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">last_token_in_lexeme</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">grammar_token_kind</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">UnderstandTokens::compile</span><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">, </span><span class="identifier-syntax">jump_on_fail</span><span class="plain-syntax">, </span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">grammar_token_kind</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">token_values</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">token_values</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">internal_error</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"There can be at most two value-producing tokens and this "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"should have been detected earlier."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[(*</span><span class="identifier-syntax">token_values</span><span class="plain-syntax">)++] = </span><span class="identifier-syntax">grammar_token_kind</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lexeme_equivalence_class</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">code_mode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last_token_in_lexeme</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">empty_text_allowed_in_lexeme</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cgl.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Jump to end of group</span><span class="named-paragraph-number">6.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">next_reserved_label</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::place_label</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">next_reserved_label</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">next_reserved_label</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">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">WN_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">gprk</span><span class="plain-syntax">-></span><span class="identifier-syntax">group_wn_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">eog_reserved_label</span><span class="plain-syntax">) </span><span class="identifier-syntax">Produce::place_label</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">eog_reserved_label</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">eog_reserved_label</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cgl.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Jump to end of group</span><span class="named-paragraph-number">6.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last_token_in_lexeme</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_SLASH_iname</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">pn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">pn_to</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6_1" class="paragraph-anchor"></a><b>§6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Jump to end of group</span><span class="named-paragraph-number">6.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">eog_reserved_label</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">L</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">L</span><span class="plain-syntax">, </span><span class="string-syntax">".group_%d_%d_end"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_grammar_block</span><span class="plain-syntax">, </span><span class="identifier-syntax">lexeme_equivalence_class</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">eog_reserved_label</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::reserve_label</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">L</span><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">JUMP_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::lab</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">eog_reserved_label</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-cgl.html#SP6">§6</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::compile_slash_gprs</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">RTCommandGrammarLines::compile_slash_gprs</span></span>:<br/>Command Grammars - <a href="5-cg.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">slash_gpr</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sgpr</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">sgpr</span><span class="plain-syntax">, </span><span class="reserved-syntax">slash_gpr</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">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">sgpr_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gpr_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax"> = </span><span class="identifier-syntax">UnderstandValueTokens::new_kit</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">UnderstandValueTokens::add_original</span><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">UnderstandValueTokens::add_standard_set</span><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="5-cgl.html#SP6" class="function-link"><span class="function-syntax">RTCommandGrammarLines::compile_token_line</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">first_choice</span><span class="plain-syntax">, </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">last_choice</span><span class="plain-syntax">, </span><span class="identifier-syntax">CG_IS_TOKEN</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">.</span><span class="identifier-syntax">group_wn_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">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">GPR_PREPOSITION_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><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>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cg.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresscurrent">cgl</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -129,7 +129,7 @@
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure external_file_compilation_data is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-se.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-bd.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-se.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-bd.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-prs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-se.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-prs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-se.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -134,7 +134,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresscurrent">gng</li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-cg.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresscurrent">gng</li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-cg.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -149,7 +149,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-los.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-act.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresscurrent">los</li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-nap.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-act.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresscurrent">los</li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-nap.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -112,7 +112,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure nap_compilation_data is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-los.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresscurrent">nap</li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-ap.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-los.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresscurrent">nap</li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-ap.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -186,7 +186,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure short_name_notice is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-rsft.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">nmn</li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-prs.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-rsft.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">nmn</li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-prs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -188,7 +188,7 @@ for the kinds we inherit from.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure cached_understanding is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nmn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresscurrent">prs</li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-fgr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nmn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresscurrent">prs</li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-fgr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -108,7 +108,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bck.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresscurrent">rgn</li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-tm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bck.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresscurrent">rgn</li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-tm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -440,7 +440,7 @@ turn by turn.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-sc.html#SP4_2">§4.2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresscurrent">sc</li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-ts.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresscurrent">sc</li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-ts.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -782,7 +782,7 @@ actually running:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresscurrent">scn</li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-act.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresscurrent">scn</li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-act.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-fgr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-ef.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-fgr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-ef.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -142,7 +142,7 @@ be compiled, so this code is never used.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresscurrent">spt</li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-tp.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresscurrent">spt</li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-tp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -341,7 +341,7 @@ identifier names for instance have not yet been settled.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-rgn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresscurrent">tm</li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-sc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-rgn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresscurrent">tm</li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-sc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -114,7 +114,7 @@ the function <span class="extract"><span class="extract-syntax">ChangePlayer</sp
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-spt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-bck.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-spt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-bck.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -88,7 +88,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-sc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresscurrent">ts</li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progressnext"><a href="5-scn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-sc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresscurrent">ts</li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresssection"><a href="5-act.html">act</a></li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progresssection"><a href="5-gng.html">gng</a></li><li class="progresssection"><a href="5-cg.html">cg</a></li><li class="progresssection"><a href="5-cgl.html">cgl</a></li><li class="progressnext"><a href="5-scn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -399,6 +399,11 @@
|
|||
<spon class="sectiontitle">Command Grammars</span></a> -
|
||||
<span class="sectionpurpose">Runtime support for CGs.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="5-cgl.html">
|
||||
<spon class="sectiontitle">Command Grammar Lines</span></a> -
|
||||
<span class="sectionpurpose">Runtime support for CGLs.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Total memory consumption was 259375K = 253 MB
|
||||
Total memory consumption was 259376K = 253 MB
|
||||
|
||||
62.6% was used for 1340372 objects, in 278898 frames in 203 x 800K = 162400K = 158 MB:
|
||||
|
||||
|
@ -66,8 +66,8 @@ Total memory consumption was 259375K = 253 MB
|
|||
---- kind_constructor 77 objects, 54824 bytes
|
||||
---- property_inference_data 1315 objects, 52600 bytes
|
||||
---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes
|
||||
---- cg_line 230 objects, 49680 bytes
|
||||
---- text_substitution 436 objects, 48832 bytes
|
||||
---- cg_line 230 objects, 47840 bytes
|
||||
---- table 7 objects, 45528 bytes
|
||||
---- inter_node_list 750 objects, 42000 bytes
|
||||
---- activity_list_array 1 x 1000 objects, 40032 bytes
|
||||
|
@ -91,9 +91,9 @@ Total memory consumption was 259375K = 253 MB
|
|||
---- action_name 90 objects, 18000 bytes
|
||||
---- parse_node_tree 20 objects, 17280 bytes
|
||||
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
|
||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||
---- to_phrase_request 59 objects, 15576 bytes
|
||||
---- method 323 objects, 15504 bytes
|
||||
---- adjective 137 objects, 14248 bytes
|
||||
|
@ -116,22 +116,22 @@ Total memory consumption was 259375K = 253 MB
|
|||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- build_vertex 40 objects, 4480 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
|
||||
---- placement_affecting_array 1 x 100 objects, 4032 bytes
|
||||
---- activity 35 objects, 3920 bytes
|
||||
---- inbuild_edition 54 objects, 3888 bytes
|
||||
---- parse_node_annotation_type 119 objects, 3808 bytes
|
||||
---- inbuild_copy 35 objects, 3640 bytes
|
||||
---- command_line_switch 43 objects, 3440 bytes
|
||||
---- property_setting_bp_data 84 objects, 3360 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- instance_usage_array 1 x 200 objects, 3232 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- method_set 100 objects, 3200 bytes
|
||||
---- compatibility_specification 66 objects, 3168 bytes
|
||||
---- definition 44 objects, 3168 bytes
|
||||
---- compatibility_specification 66 objects, 3168 bytes
|
||||
---- inform_extension 19 objects, 3040 bytes
|
||||
---- either_or_property_data 62 objects, 2976 bytes
|
||||
---- property_of_value_storage 93 objects, 2976 bytes
|
||||
---- either_or_property_data 62 objects, 2976 bytes
|
||||
---- submodule_request 72 objects, 2880 bytes
|
||||
---- inter_construct 32 objects, 2560 bytes
|
||||
---- parentage_inference_data 79 objects, 2528 bytes
|
||||
|
@ -143,8 +143,8 @@ Total memory consumption was 259375K = 253 MB
|
|||
---- scene 1 object, 2096 bytes
|
||||
---- use_option 29 objects, 1856 bytes
|
||||
---- pronoun_usage 42 objects, 1680 bytes
|
||||
---- table_contribution_array 1 x 100 objects, 1632 bytes
|
||||
---- activity_crossref_array 1 x 100 objects, 1632 bytes
|
||||
---- table_contribution_array 1 x 100 objects, 1632 bytes
|
||||
---- kind_interaction 39 objects, 1560 bytes
|
||||
---- plugin 24 objects, 1536 bytes
|
||||
---- inter_annotation_form 37 objects, 1480 bytes
|
||||
|
@ -154,8 +154,8 @@ Total memory consumption was 259375K = 253 MB
|
|||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- build_script 40 objects, 1280 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- hierarchy_metadatum 15 objects, 1200 bytes
|
||||
---- direction_inference_data 30 objects, 1200 bytes
|
||||
---- hierarchy_metadatum 15 objects, 1200 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
---- table_column 16 objects, 896 bytes
|
||||
---- inbuild_requirement 22 objects, 880 bytes
|
||||
|
@ -164,39 +164,39 @@ Total memory consumption was 259375K = 253 MB
|
|||
---- cached_understanding 21 objects, 840 bytes
|
||||
---- runtime_kind_structure 13 objects, 832 bytes
|
||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||
---- pipeline_stage 17 objects, 816 bytes
|
||||
---- target_vm 6 objects, 816 bytes
|
||||
---- pipeline_stage 17 objects, 816 bytes
|
||||
---- generated_segment 25 objects, 800 bytes
|
||||
---- inter_data_type 14 objects, 784 bytes
|
||||
---- submodule_identity 23 objects, 736 bytes
|
||||
---- rulebook_outcome 17 objects, 680 bytes
|
||||
---- inform_language 6 objects, 672 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- nascent_array 7 objects, 616 bytes
|
||||
---- named_rulebook_outcome 15 objects, 600 bytes
|
||||
---- inbuild_search_result 15 objects, 600 bytes
|
||||
---- named_rulebook_outcome 15 objects, 600 bytes
|
||||
---- label_namespace 10 objects, 560 bytes
|
||||
---- small_word_set 11 objects, 528 bytes
|
||||
---- inform_kit 5 objects, 520 bytes
|
||||
---- implication 13 objects, 520 bytes
|
||||
---- inform_kit 5 objects, 520 bytes
|
||||
---- inference_family 11 objects, 440 bytes
|
||||
---- i6_memory_setting 13 objects, 416 bytes
|
||||
---- equation 4 objects, 416 bytes
|
||||
---- i6_memory_setting 13 objects, 416 bytes
|
||||
---- module_package 10 objects, 400 bytes
|
||||
---- dval_written 10 objects, 400 bytes
|
||||
---- article_usage 8 objects, 384 bytes
|
||||
---- bp_family 12 objects, 384 bytes
|
||||
---- source_file 5 objects, 360 bytes
|
||||
---- inbuild_genre 7 objects, 336 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- inform_pipeline 4 objects, 256 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
|
@ -204,34 +204,34 @@ Total memory consumption was 259375K = 253 MB
|
|||
---- test_scenario 1 object, 208 bytes
|
||||
---- compilation_unit 5 objects, 200 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- inform_project 1 object, 176 bytes
|
||||
---- link_instruction 4 objects, 160 bytes
|
||||
---- code_generation_target 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- pointer_allocation 2 objects, 160 bytes
|
||||
---- link_instruction 4 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- pointer_allocation 2 objects, 160 bytes
|
||||
---- element_activation 4 objects, 128 bytes
|
||||
---- codegen_pipeline 1 object, 128 bytes
|
||||
---- inbuild_nest 3 objects, 120 bytes
|
||||
---- inform_kit_ittt 2 objects, 96 bytes
|
||||
---- article 2 objects, 80 bytes
|
||||
---- list_together_routine 2 objects, 80 bytes
|
||||
---- article 2 objects, 80 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- figures_data 1 object, 48 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- by_routine_bp_data 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- parse_name_notice 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:
|
||||
|
||||
15.9% text stream storage 42247836 bytes in 265818 claims
|
||||
15.9% text stream storage 42247980 bytes in 265818 claims
|
||||
3.4% dictionary storage 9278976 bytes in 16372 claims
|
||||
---- sorting 1056 bytes in 3 claims
|
||||
2.7% source text 7200000 bytes in 3 claims
|
||||
|
@ -247,5 +247,5 @@ Total memory consumption was 259375K = 253 MB
|
|||
---- emitter array storage 12320 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
20.2% was overhead - 53880256 bytes = 52617K = 51 MB
|
||||
20.2% was overhead - 53878416 bytes = 52615K = 51 MB
|
||||
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
100.0% in inform7 run
|
||||
67.4% in compilation to Inter
|
||||
66.9% in compilation to Inter
|
||||
25.7% in //Phrases::Manager::compile_first_block//
|
||||
8.5% in //Phrases::Manager::compile_as_needed//
|
||||
7.0% in //Strings::compile_responses//
|
||||
6.8% in //Strings::compile_responses//
|
||||
6.2% in //InferenceSubjects::emit_all//
|
||||
4.1% in //MajorNodes::pre_pass//
|
||||
3.2% in //MajorNodes::pass_1//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
2.0% in //Phrases::Manager::rulebooks_array//
|
||||
1.9% in //Phrases::Manager::rulebooks_array//
|
||||
0.9% in //RTVerbs::ConjugateVerb//
|
||||
0.7% in //Phrases::Manager::traverse//
|
||||
0.5% in //World::stage_V//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
0.3% in //Phrases::Manager::compile_rulebooks//
|
||||
0.3% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.3% in //RTRelations::compile_defined_relations//
|
||||
0.3% in //World::stage_V//
|
||||
0.1% in //RTCommandGrammars::compile_all//
|
||||
0.1% in //RTKinds::compile_data_type_support_routines//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
3.8% not specifically accounted for
|
||||
30.3% in running Inter pipeline
|
||||
10.0% in step preparation
|
||||
9.6% in inter step 2/12: link
|
||||
7.1% in inter step 12/12: generate inform6 -> auto.inf
|
||||
3.4% not specifically accounted for
|
||||
30.7% in running Inter pipeline
|
||||
10.1% in step preparation
|
||||
9.9% in inter step 2/12: link
|
||||
7.0% in inter step 12/12: generate inform6 -> auto.inf
|
||||
0.3% in inter step 9/12: make-identifiers-unique
|
||||
0.1% in inter step 10/12: reconcile-verbs
|
||||
0.1% in inter step 11/12: eliminate-redundant-labels
|
||||
|
@ -31,6 +31,6 @@
|
|||
0.1% in inter step 6/12: assimilate
|
||||
0.1% in inter step 7/12: resolve-external-symbols
|
||||
0.1% in inter step 8/12: inspect-plugs
|
||||
1.9% not specifically accounted for
|
||||
2.1% not specifically accounted for
|
||||
2.0% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
|
|
|
@ -3,13 +3,34 @@ SilentMistake
|
|||
PM_BadReferringProperty
|
||||
PM_BadUnderstandProperty
|
||||
PM_BadUnderstandPropertyAs
|
||||
PM_BadVisibilityWhen
|
||||
PM_BadWhen
|
||||
PM_BizarreToken
|
||||
PM_FilterQuantified
|
||||
PM_GrammarBadRelation
|
||||
PM_GrammarIllFounded
|
||||
PM_GrammarTokenCowardice
|
||||
PM_GrammarTranslatedAlready
|
||||
PM_GrammarValueRelation
|
||||
PM_GrammarValueRelation2
|
||||
PM_LiteralPunctuation
|
||||
PM_MixedOutcome
|
||||
PM_MultipleMultiples
|
||||
PM_NontextualUnderstand
|
||||
PM_NotNewCommand
|
||||
PM_NotOldCommand
|
||||
PM_ObsoleteHeldTokens
|
||||
PM_OldVerbUsage
|
||||
PM_OverAmbitiousSlash
|
||||
PM_OverComplexToken
|
||||
PM_RelatedByEquality
|
||||
PM_SpacyCommand
|
||||
PM_TextlessMistake
|
||||
PM_TextTokenRestricted
|
||||
PM_ThreeValuedLine
|
||||
PM_TooManyAliases
|
||||
PM_TooManyGrammarLines
|
||||
PM_TwoValuedToken
|
||||
PM_UnderstandAsActivity
|
||||
PM_UnderstandAsBadValue
|
||||
PM_UnderstandAsCompoundText
|
||||
|
@ -24,5 +45,10 @@ PM_UnderstandPluralValue
|
|||
PM_UnderstandPropertyAsNonObjectKind
|
||||
PM_UnderstandVague
|
||||
PM_UnderstandVariable
|
||||
PM_UnknownToken
|
||||
PM_UnknownUnderstandProperty
|
||||
PM_UnknownUnpermittedProperty
|
||||
PM_UnparsableKind
|
||||
PM_UseTextNotTopic
|
||||
PM_UseThingNotObject
|
||||
PM_WhenAction
|
||||
|
|
|
@ -194,6 +194,7 @@ DECLARE_CLASS(use_as_event)
|
|||
@e plugin_CLASS
|
||||
@e property_of_value_storage_CLASS
|
||||
@e runtime_kind_structure_CLASS
|
||||
@e slash_gpr_CLASS
|
||||
@e test_scenario_CLASS
|
||||
|
||||
=
|
||||
|
@ -213,6 +214,7 @@ DECLARE_CLASS(nascent_array)
|
|||
DECLARE_CLASS(plugin)
|
||||
DECLARE_CLASS(property_of_value_storage)
|
||||
DECLARE_CLASS(runtime_kind_structure)
|
||||
DECLARE_CLASS(slash_gpr)
|
||||
DECLARE_CLASS(test_scenario)
|
||||
|
||||
@ //index// --
|
||||
|
@ -262,7 +264,6 @@ DECLARE_CLASS(rubric_holder)
|
|||
@e regions_data_CLASS
|
||||
@e release_instructions_CLASS
|
||||
@e scene_CLASS
|
||||
@e slash_gpr_CLASS
|
||||
@e spatial_data_CLASS
|
||||
|
||||
@e anl_clause_CLASS
|
||||
|
@ -296,7 +297,6 @@ DECLARE_CLASS(part_of_inference_data)
|
|||
DECLARE_CLASS(regions_data)
|
||||
DECLARE_CLASS(release_instructions)
|
||||
DECLARE_CLASS(scene)
|
||||
DECLARE_CLASS(slash_gpr)
|
||||
DECLARE_CLASS(spatial_data)
|
||||
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(anl_clause, 1000)
|
||||
|
|
|
@ -108,7 +108,7 @@ void Actions::add_gl(action_name *an, cg_line *cgl) {
|
|||
if (an->command_parser_grammar_producing_this == NULL)
|
||||
an->command_parser_grammar_producing_this = cgl;
|
||||
else
|
||||
UnderstandLines::list_with_action_add(
|
||||
CommandsIndex::list_with_action_add(
|
||||
an->command_parser_grammar_producing_this, cgl);
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -89,7 +89,7 @@ void DeterminationTypes::set_single_term(determination_type *gty, parse_node *sp
|
|||
}
|
||||
|
||||
@ The behaviour of this sorting function is documented in the discussion
|
||||
of GL sorting in //Command Grammar Lines//.
|
||||
of CGL sorting in //Command Grammar Lines//.
|
||||
|
||||
=
|
||||
int DeterminationTypes::must_precede(determination_type *gty1, determination_type *gty2) {
|
||||
|
|
|
@ -414,7 +414,7 @@ void UnderstandGeneralTokens::top_of_head(gpr_kit *gprk, inter_name *cg_iname, i
|
|||
|
||||
@ The head and tail routines can only be understood by knowing that the
|
||||
following code is used to reset the grammar-line parser after each failure
|
||||
of a GL to parse.
|
||||
of a CGL to parse.
|
||||
|
||||
=
|
||||
void UnderstandGeneralTokens::after_gl_failed(gpr_kit *gprk, inter_symbol *label, int pluralised) {
|
||||
|
|
|
@ -15,7 +15,7 @@ these arcane annotations of the parse tree.
|
|||
and set for square-bracketed tokens such as |"[something]"|.
|
||||
|
||||
|index| stores the GSB scoring contribution made by the token to the
|
||||
GL sorting algorithm.
|
||||
CGL sorting algorithm.
|
||||
|
||||
The |grammar_token_code_ANNOT| annotation is meaningful only for parse nodes
|
||||
with an evaluation of type |DESCRIPTION|. These are tokens which describe a
|
||||
|
@ -138,7 +138,7 @@ int UnderstandTokens::is_text(parse_node *pn) {
|
|||
|
||||
@h The special tokens.
|
||||
Do not change any of these GTC numbers without first checking and updating
|
||||
the discussion of GL sorting in Grammar Lines:
|
||||
the discussion of CGL sorting in //Command Grammar Lines//:
|
||||
|
||||
=
|
||||
int UnderstandTokens::gsb_for_special_token(int gtc) {
|
||||
|
|
|
@ -30,7 +30,7 @@ int ParsingPlugin::production_line(int stage, int debugging,
|
|||
}
|
||||
if (stage == INTER2_CSEQ) {
|
||||
BENCH(UnderstandGeneralTokens::write_parse_name_routines);
|
||||
BENCH(UnderstandLines::MistakeActionSub_routine);
|
||||
BENCH(RTCommandGrammarLines::MistakeActionSub_routine);
|
||||
BENCH(CommandGrammars::prepare);
|
||||
BENCH(RTCommandGrammars::compile_conditions);
|
||||
BENCH(UnderstandValueTokens::number);
|
||||
|
|
|
@ -44,8 +44,8 @@ the reader interact with them do not need this, and can deactivate the plugin.
|
|||
|
||||
(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 GLs, and
|
||||
an individual GL must belong to exactly one CG. There are five different
|
||||
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:
|
||||
(-1) |CG_IS_COMMAND|. An imperative verbal command at run-time.
|
||||
(-2) |CG_IS_TOKEN|. A square-bracketed token in other grammar.
|
||||
|
@ -55,12 +55,12 @@ types of CG, differentiated mostly by the purpose to which the CG is put:
|
|||
(-6) |CG_IS_PROPERTY_NAME|. A noun phrase at run time: a name for one
|
||||
possibility for an either/or property, say "open" or "fixed in place".
|
||||
|
||||
(b) A grammar line (GL) is a single possibility within a CG: for
|
||||
(b) A grammar line (CGL) is a single possibility within a CG: for
|
||||
example, the line matching |"take [something]"| in the CG for the TAKE
|
||||
command. Each GL is a list of tokens, and an individual token must belong
|
||||
to exactly one GL.
|
||||
command. Each CGL is a list of tokens, and an individual token must belong
|
||||
to exactly one CGL.
|
||||
|
||||
(c) A grammar token (GTOK) is a single particle of a GL: for
|
||||
(c) A grammar token (GTOK) is a single particle of a CGL: for
|
||||
example, |'take'| and |something| are tokens.
|
||||
|
||||
The picture is not quite so hierarchical as it looks, though, because
|
||||
|
|
|
@ -119,7 +119,7 @@ int IXActions::index(OUTPUT_STREAM, action_name *an, int pass,
|
|||
HTML_TAG("hr");
|
||||
HTML_OPEN("p"); WRITE("<b>Typed commands leading to this action</b>\n"); HTML_CLOSE("p");
|
||||
HTML_OPEN("p");
|
||||
if (UnderstandLines::index_list_with_action(OUT, an->command_parser_grammar_producing_this) == FALSE)
|
||||
if (CommandsIndex::index_list_with_action(OUT, an->command_parser_grammar_producing_this) == FALSE)
|
||||
WRITE("<i>None</i>");
|
||||
HTML_CLOSE("p");
|
||||
if (StackedVariables::owner_empty(an->action_variables) == FALSE) {
|
||||
|
|
|
@ -278,9 +278,9 @@ void CommandsIndex::index_for_extension(OUTPUT_STREAM, source_file *sf, inform_e
|
|||
}
|
||||
|
||||
@ The "Commands available to the player" portion of the Actions index page
|
||||
is, in effect, an alphabetised merge of the GLs found within the command CGs.
|
||||
GLs for the "no verb verb" appear under the special headword "0" (which
|
||||
is not displayed); otherwise GLs appear under the main command word, and
|
||||
is, in effect, an alphabetised merge of the CGLs found within the command CGs.
|
||||
CGLs for the "no verb verb" appear under the special headword "0" (which
|
||||
is not displayed); otherwise CGLs appear under the main command word, and
|
||||
aliases are shown with references like: "drag", same as "pull".
|
||||
|
||||
One routine takes a CG and creates suitable entries for the Actions index
|
||||
|
@ -300,7 +300,7 @@ void CommandsIndex::make_command_index_entries(OUTPUT_STREAM, command_grammar *c
|
|||
}
|
||||
|
||||
void CommandsIndex::index_normal(OUTPUT_STREAM, command_grammar *cg, text_stream *headword) {
|
||||
UnderstandLines::sorted_list_index_normal(OUT, cg->sorted_first_line, headword);
|
||||
CommandsIndex::sorted_list_index_normal(OUT, cg->sorted_first_line, headword);
|
||||
}
|
||||
|
||||
void CommandsIndex::index_alias(OUTPUT_STREAM, command_grammar *cg, text_stream *headword) {
|
||||
|
@ -344,7 +344,7 @@ void CommandsIndex::index_tokens_for(OUTPUT_STREAM, wording W, char *special, pa
|
|||
if (Str::len(help) > 0) Index::DocReferences::link(OUT, help);
|
||||
if (explanation) WRITE(" - %s", explanation);
|
||||
HTML_CLOSE("p");
|
||||
if (defns) UnderstandLines::index_list_for_token(OUT, defns);
|
||||
if (defns) CommandsIndex::index_list_for_token(OUT, defns);
|
||||
}
|
||||
|
||||
|
||||
|
@ -356,3 +356,135 @@ void CommandsIndex::index_command_aliases(OUTPUT_STREAM, command_grammar *cg) {
|
|||
}
|
||||
|
||||
|
||||
typedef struct cg_line_indexing_data {
|
||||
struct cg_line *next_with_action; /* used when indexing actions */
|
||||
struct command_grammar *belongs_to_cg; /* similarly, used only in indexing */
|
||||
} cg_line_indexing_data;
|
||||
|
||||
cg_line_indexing_data CommandsIndex::new_id(cg_line *cg) {
|
||||
cg_line_indexing_data cglid;
|
||||
cglid.belongs_to_cg = NULL;
|
||||
cglid.next_with_action = NULL;
|
||||
return cglid;
|
||||
}
|
||||
|
||||
@h Indexing by grammar.
|
||||
This is the more obvious form of indexing: we show the grammar lines which
|
||||
make up an individual CGL. (For instance, this is used in the Actions index
|
||||
to show the grammar for an individual command word, by calling the routine
|
||||
below for that command word's CG.) Such an index list is done in sorted
|
||||
order, so that the order of appearance in the index corresponds to the
|
||||
order of parsing -- this is what the reader of the index is interested in.
|
||||
|
||||
=
|
||||
void CommandsIndex::sorted_list_index_normal(OUTPUT_STREAM,
|
||||
cg_line *list_head, text_stream *headword) {
|
||||
cg_line *cgl;
|
||||
for (cgl = list_head; cgl; cgl = cgl->sorted_next_line)
|
||||
CommandsIndex::cgl_index_normal(OUT, cgl, headword);
|
||||
}
|
||||
|
||||
void CommandsIndex::cgl_index_normal(OUTPUT_STREAM, cg_line *cgl, text_stream *headword) {
|
||||
action_name *an = cgl->resulting_action;
|
||||
if (an == NULL) return;
|
||||
Index::anchor(OUT, headword);
|
||||
if (ActionSemantics::is_out_of_world(an))
|
||||
HTML::begin_colour(OUT, I"800000");
|
||||
WRITE(""");
|
||||
CommandsIndex::verb_definition(OUT, Lexer::word_text(cgl->original_text),
|
||||
headword, EMPTY_WORDING);
|
||||
WRITE(""");
|
||||
Index::link(OUT, cgl->original_text);
|
||||
WRITE(" - <i>%+W", ActionNameNames::tensed(an, IS_TENSE));
|
||||
Index::detail_link(OUT, "A", an->allocation_id, TRUE);
|
||||
if (cgl->reversed) WRITE(" (reversed)");
|
||||
WRITE("</i>");
|
||||
if (ActionSemantics::is_out_of_world(an))
|
||||
HTML::end_colour(OUT);
|
||||
HTML_TAG("br");
|
||||
}
|
||||
|
||||
@h Indexing by action.
|
||||
Grammar lines are typically indexed twice: the other time is when all
|
||||
grammar lines belonging to a given action are tabulated. Special linked
|
||||
lists are kept for this purpose, and this is where we unravel them and
|
||||
print to the index. The question of sorted vs unsorted is meaningless
|
||||
here, since the CGLs appearing in such a list will typically belong to
|
||||
several different CGs. (As it happens, they appear in order of creation,
|
||||
i.e., in source text order.)
|
||||
|
||||
Tiresomely, all of this means that we need to store "uphill" pointers
|
||||
in CGLs: back up to the CGs that own them. The following routine does
|
||||
this for a whole list of CGLs:
|
||||
|
||||
=
|
||||
void CommandsIndex::list_assert_ownership(cg_line *list_head, command_grammar *cg) {
|
||||
cg_line *cgl;
|
||||
for (cgl = list_head; cgl; cgl = cgl->next_line)
|
||||
cgl->indexing_data.belongs_to_cg = cg;
|
||||
}
|
||||
|
||||
@ And this routine accumulates the per-action lists of CGLs:
|
||||
|
||||
=
|
||||
void CommandsIndex::list_with_action_add(cg_line *list_head, cg_line *cgl) {
|
||||
if (list_head == NULL) internal_error("tried to add to null action list");
|
||||
while (list_head->indexing_data.next_with_action)
|
||||
list_head = list_head->indexing_data.next_with_action;
|
||||
list_head->indexing_data.next_with_action = cgl;
|
||||
}
|
||||
|
||||
@ Finally, here we index an action list of CGLs, each getting a line in
|
||||
the HTML index.
|
||||
|
||||
=
|
||||
int CommandsIndex::index_list_with_action(OUTPUT_STREAM, cg_line *cgl) {
|
||||
int said_something = FALSE;
|
||||
while (cgl != NULL) {
|
||||
if (cgl->indexing_data.belongs_to_cg) {
|
||||
wording VW = CommandGrammars::get_verb_text(cgl->indexing_data.belongs_to_cg);
|
||||
TEMPORARY_TEXT(trueverb)
|
||||
if (Wordings::nonempty(VW))
|
||||
WRITE_TO(trueverb, "%W", Wordings::one_word(Wordings::first_wn(VW)));
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
WRITE(""");
|
||||
CommandsIndex::verb_definition(OUT,
|
||||
Lexer::word_text(cgl->original_text), trueverb, VW);
|
||||
WRITE(""");
|
||||
Index::link(OUT, cgl->original_text);
|
||||
if (cgl->reversed) WRITE(" <i>reversed</i>");
|
||||
HTML_CLOSE("p");
|
||||
said_something = TRUE;
|
||||
DISCARD_TEXT(trueverb)
|
||||
}
|
||||
cgl = cgl->indexing_data.next_with_action;
|
||||
}
|
||||
return said_something;
|
||||
}
|
||||
|
||||
@ And the same, but more simply:
|
||||
|
||||
=
|
||||
void CommandsIndex::index_list_for_token(OUTPUT_STREAM, cg_line *cgl) {
|
||||
int k = 0;
|
||||
while (cgl != NULL) {
|
||||
if (cgl->indexing_data.belongs_to_cg) {
|
||||
wording VW = CommandGrammars::get_verb_text(cgl->indexing_data.belongs_to_cg);
|
||||
TEMPORARY_TEXT(trueverb)
|
||||
if (Wordings::nonempty(VW))
|
||||
WRITE_TO(trueverb, "%W", Wordings::one_word(Wordings::first_wn(VW)));
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
if (k++ == 0) WRITE("="); else WRITE("or");
|
||||
WRITE(" "");
|
||||
CommandsIndex::verb_definition(OUT,
|
||||
Lexer::word_text(cgl->original_text), trueverb, EMPTY_WORDING);
|
||||
WRITE(""");
|
||||
Index::link(OUT, cgl->original_text);
|
||||
if (cgl->reversed) WRITE(" <i>reversed</i>");
|
||||
HTML_CLOSE("p");
|
||||
DISCARD_TEXT(trueverb)
|
||||
}
|
||||
cgl = cgl->sorted_next_line;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
612
inform7/runtime-module/Chapter 5/Command Grammar Lines.w
Normal file
612
inform7/runtime-module/Chapter 5/Command Grammar Lines.w
Normal file
|
@ -0,0 +1,612 @@
|
|||
[RTCommandGrammarLines::] Command Grammar Lines.
|
||||
|
||||
Runtime support for CGLs.
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
typedef struct cg_line_compilation_data {
|
||||
int suppress_compilation; /* has been compiled in a single I6 grammar token already? */
|
||||
struct inter_name *cond_token_iname; /* for its |Cond_Token_*| routine, if any */
|
||||
struct inter_name *mistake_iname; /* for its |Mistake_Token_*| routine, if any */
|
||||
} cg_line_compilation_data;
|
||||
|
||||
cg_line_compilation_data RTCommandGrammarLines::new_cd(cg_line *cg) {
|
||||
cg_line_compilation_data cglcd;
|
||||
cglcd.suppress_compilation = FALSE;
|
||||
cglcd.cond_token_iname = NULL;
|
||||
cglcd.mistake_iname = NULL;
|
||||
return cglcd;
|
||||
}
|
||||
|
||||
void RTCommandGrammarLines::set_mistake(cg_line *cgl, wording MW) {
|
||||
if (cgl->compilation_data.mistake_iname == NULL) {
|
||||
package_request *PR = Hierarchy::local_package(MISTAKES_HAP);
|
||||
cgl->compilation_data.mistake_iname = Hierarchy::make_iname_in(MISTAKE_FN_HL, PR);
|
||||
}
|
||||
}
|
||||
|
||||
void RTCommandGrammarLines::cgl_compile_mistake_token_as_needed(cg_line *cgl) {
|
||||
if (cgl->mistaken) {
|
||||
packaging_state save = Routines::begin(cgl->compilation_data.mistake_iname);
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), NE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_object, Hierarchy::find(ACTOR_HL));
|
||||
Produce::val_iname(Emit::tree(), K_object, Hierarchy::find(PLAYER_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_iname(Emit::tree(), K_value, Hierarchy::find(GPR_FAIL_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_iname(Emit::tree(), K_number, Hierarchy::find(UNDERSTAND_AS_MISTAKE_NUMBER_HL));
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) (100 + cgl->allocation_id));
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Routines::end(save);
|
||||
}
|
||||
}
|
||||
|
||||
void RTCommandGrammarLines::cgl_compile_extra_token_for_mistake(cg_line *cgl, int cg_is) {
|
||||
if (cgl->mistaken) {
|
||||
if (cg_is == CG_IS_COMMAND) {
|
||||
Emit::array_iname_entry(cgl->compilation_data.mistake_iname);
|
||||
} else
|
||||
internal_error("CGLs may only be mistaken in command grammar");
|
||||
}
|
||||
}
|
||||
|
||||
inter_name *MistakeAction_iname = NULL;
|
||||
|
||||
int RTCommandGrammarLines::cgl_compile_result_of_mistake(gpr_kit *gprk, cg_line *cgl) {
|
||||
if (cgl->mistaken) {
|
||||
if (MistakeAction_iname == NULL) internal_error("no MistakeAction yet");
|
||||
Emit::array_iname_entry(VERB_DIRECTIVE_RESULT_iname);
|
||||
Emit::array_iname_entry(MistakeAction_iname);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void RTCommandGrammarLines::MistakeActionSub_routine(void) {
|
||||
package_request *MAP = Hierarchy::synoptic_package(SACTIONS_HAP);
|
||||
packaging_state save = Routines::begin(Hierarchy::make_iname_in(MISTAKEACTIONSUB_HL, MAP));
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), SWITCH_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(UNDERSTAND_AS_MISTAKE_NUMBER_HL));
|
||||
Produce::code(Emit::tree());
|
||||
Produce::down(Emit::tree());
|
||||
cg_line *cgl;
|
||||
LOOP_OVER(cgl, cg_line)
|
||||
if (cgl->mistaken) {
|
||||
current_sentence = cgl->where_grammar_specified;
|
||||
parse_node *spec = NULL;
|
||||
if (Wordings::empty(cgl->mistake_response_text))
|
||||
spec = Specifications::new_UNKNOWN(cgl->mistake_response_text);
|
||||
else if (<s-value>(cgl->mistake_response_text)) spec = <<rp>>;
|
||||
else spec = Specifications::new_UNKNOWN(cgl->mistake_response_text);
|
||||
Produce::inv_primitive(Emit::tree(), CASE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) (100+cgl->allocation_id));
|
||||
Produce::code(Emit::tree());
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(PARSERERROR_HL));
|
||||
Produce::down(Emit::tree());
|
||||
Specifications::Compiler::emit_constant_to_kind_as_val(spec, K_text);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
}
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), DEFAULT_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::code(Emit::tree());
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), PRINT_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_text(Emit::tree(), I"I didn't understand that sentence.\n");
|
||||
Produce::up(Emit::tree());
|
||||
Produce::rtrue(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_iname(Emit::tree(), K_number, Hierarchy::find(SAY__P_HL));
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 1);
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Routines::end(save);
|
||||
|
||||
MistakeAction_iname = Hierarchy::make_iname_in(MISTAKEACTION_HL, MAP);
|
||||
Emit::named_pseudo_numeric_constant(MistakeAction_iname, K_action_name, 10000);
|
||||
Produce::annotate_i(MistakeAction_iname, ACTION_IANN, 1);
|
||||
Hierarchy::make_available(Emit::tree(), MistakeAction_iname);
|
||||
}
|
||||
|
||||
void RTCommandGrammarLines::cgl_compile_condition_token_as_needed(cg_line *cgl) {
|
||||
if (UnderstandLines::conditional(cgl)) {
|
||||
current_sentence = cgl->where_grammar_specified;
|
||||
|
||||
package_request *PR = Hierarchy::local_package(COND_TOKENS_HAP);
|
||||
cgl->compilation_data.cond_token_iname = Hierarchy::make_iname_in(CONDITIONAL_TOKEN_FN_HL, PR);
|
||||
|
||||
packaging_state save = Routines::begin(cgl->compilation_data.cond_token_iname);
|
||||
|
||||
parse_node *spec = UnderstandLines::get_understand_cond(cgl);
|
||||
pcalc_prop *prop = cgl->understand_when_prop;
|
||||
|
||||
if ((spec) || (prop)) {
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
if ((spec) && (prop)) {
|
||||
Produce::inv_primitive(Emit::tree(), AND_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
}
|
||||
if (spec) Specifications::Compiler::emit_as_val(K_truth_state, spec);
|
||||
if (prop) Calculus::Deferrals::emit_test_of_proposition(Rvalues::new_self_object_constant(), prop);
|
||||
if ((spec) && (prop)) {
|
||||
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(GPR_PREPOSITION_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
}
|
||||
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(GPR_FAIL_HL));
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Routines::end(save);
|
||||
}
|
||||
}
|
||||
|
||||
void RTCommandGrammarLines::cgl_compile_extra_token_for_condition(gpr_kit *gprk, cg_line *cgl,
|
||||
int cg_is, inter_symbol *current_label) {
|
||||
if (UnderstandLines::conditional(cgl)) {
|
||||
if (cgl->compilation_data.cond_token_iname == NULL) internal_error("CGL cond token not ready");
|
||||
if (cg_is == CG_IS_COMMAND) {
|
||||
Emit::array_iname_entry(cgl->compilation_data.cond_token_iname);
|
||||
} else {
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_call_iname(Emit::tree(), cgl->compilation_data.cond_token_iname);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(GPR_FAIL_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::code(Emit::tree());
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), JUMP_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::lab(Emit::tree(), current_label);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@h Phase IV: Compile Grammar.
|
||||
At this level we compile the list of CGLs in sorted order: this is what the
|
||||
sorting was all for. In certain cases, we skip any CGLs marked as "one word":
|
||||
these are cases arising from, e.g., "Understand "frog" as the toad.",
|
||||
where we noticed that the CGL was a single word and included it in the |name|
|
||||
property instead. This is faster and more flexible, besides writing tidier
|
||||
code.
|
||||
|
||||
The need for this is not immediately obvious. After all, shouldn't we have
|
||||
simply deleted the CGL in the first place, rather than leaving it in but
|
||||
marking it? The answer is no, because of the way inheritance works: values
|
||||
of the |name| property accumulate from class to instance in I6, since
|
||||
|name| is additive, but grammar doesn't.
|
||||
|
||||
=
|
||||
void RTCommandGrammarLines::sorted_line_list_compile(gpr_kit *gprk, cg_line *list_head,
|
||||
int cg_is, command_grammar *cg, int genuinely_verbal) {
|
||||
for (cg_line *cgl = list_head; cgl; cgl = cgl->sorted_next_line)
|
||||
if (cgl->compilation_data.suppress_compilation == FALSE)
|
||||
RTCommandGrammarLines::compile_cg_line(gprk, cgl, cg_is, cg, genuinely_verbal);
|
||||
}
|
||||
|
||||
@ The following apparently global variables are used to provide a persistent
|
||||
state for the routine below, but are not accessed elsewhere. The label
|
||||
counter is reset at the start of each CG's compilation, though this is a
|
||||
purely cosmetic effect.
|
||||
|
||||
=
|
||||
int current_grammar_block = 0;
|
||||
int current_label = 1;
|
||||
int GV_IS_VALUE_instance_mode = FALSE;
|
||||
|
||||
void RTCommandGrammarLines::reset_labels(void) {
|
||||
current_label = 1;
|
||||
}
|
||||
|
||||
@ As fancy as the following routine may look, it contains very little.
|
||||
What complexity there is comes from the fact that command CGs are compiled
|
||||
very differently to all others (most grammars are compiled in "code mode",
|
||||
generating procedural I6 statements, but command CGs are compiled to lines
|
||||
in |Verb| directives) and that CGLs resulting in actions (i.e., CGLs in
|
||||
command CGs) have not yet been type-checked, whereas all others have.
|
||||
|
||||
=
|
||||
void RTCommandGrammarLines::compile_cg_line(gpr_kit *gprk, cg_line *cgl, int cg_is, command_grammar *cg,
|
||||
int genuinely_verbal) {
|
||||
parse_node *pn;
|
||||
int i;
|
||||
int token_values;
|
||||
kind *token_value_kinds[2];
|
||||
int code_mode, consult_mode;
|
||||
|
||||
LOGIF(GRAMMAR, "Compiling grammar line: $g\n", cgl);
|
||||
|
||||
current_sentence = cgl->where_grammar_specified;
|
||||
|
||||
if (cg_is == CG_IS_COMMAND) code_mode = FALSE; else code_mode = TRUE;
|
||||
if (cg_is == CG_IS_CONSULT) consult_mode = TRUE; else consult_mode = FALSE;
|
||||
|
||||
switch (cg_is) {
|
||||
case CG_IS_COMMAND:
|
||||
case CG_IS_TOKEN:
|
||||
case CG_IS_CONSULT:
|
||||
case CG_IS_SUBJECT:
|
||||
case CG_IS_VALUE:
|
||||
case CG_IS_PROPERTY_NAME:
|
||||
break;
|
||||
default: internal_error("tried to compile unknown CG type");
|
||||
}
|
||||
|
||||
current_grammar_block++;
|
||||
token_values = 0;
|
||||
for (i=0; i<2; i++) token_value_kinds[i] = NULL;
|
||||
|
||||
if (code_mode == FALSE) Emit::array_iname_entry(VERB_DIRECTIVE_DIVIDER_iname);
|
||||
|
||||
inter_symbol *fail_label = NULL;
|
||||
|
||||
if (gprk) {
|
||||
TEMPORARY_TEXT(L)
|
||||
WRITE_TO(L, ".Fail_%d", current_label);
|
||||
fail_label = Produce::reserve_label(Emit::tree(), L);
|
||||
DISCARD_TEXT(L)
|
||||
}
|
||||
|
||||
RTCommandGrammarLines::cgl_compile_extra_token_for_condition(gprk, cgl, cg_is, fail_label);
|
||||
RTCommandGrammarLines::cgl_compile_extra_token_for_mistake(cgl, cg_is);
|
||||
|
||||
pn = cgl->tokens->down;
|
||||
if ((genuinely_verbal) && (pn)) {
|
||||
if (Annotations::read_int(pn, slash_class_ANNOT) != 0) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_SlashedCommand),
|
||||
"at present you're not allowed to use a / between command "
|
||||
"words at the start of a line",
|
||||
"so 'put/interpose/insert [something]' is out.");
|
||||
return;
|
||||
}
|
||||
pn = pn->next; /* skip command word: the |Verb| header contains it already */
|
||||
}
|
||||
|
||||
if ((cg_is == CG_IS_VALUE) && (GV_IS_VALUE_instance_mode)) {
|
||||
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, gprk->instance_s);
|
||||
RTCommandGrammars::emit_determination_type(&(cgl->cgl_type));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::code(Emit::tree());
|
||||
Produce::down(Emit::tree());
|
||||
}
|
||||
|
||||
parse_node *pn_from = pn, *pn_to = pn_from;
|
||||
for (; pn; pn = pn->next) pn_to = pn;
|
||||
|
||||
RTCommandGrammarLines::compile_token_line(gprk, code_mode, pn_from, pn_to, cg_is, consult_mode, &token_values, token_value_kinds, NULL, fail_label);
|
||||
|
||||
switch (cg_is) {
|
||||
case CG_IS_COMMAND:
|
||||
if (RTCommandGrammarLines::cgl_compile_result_of_mistake(gprk, cgl)) break;
|
||||
Emit::array_iname_entry(VERB_DIRECTIVE_RESULT_iname);
|
||||
Emit::array_action_entry(cgl->resulting_action);
|
||||
|
||||
if (cgl->reversed) {
|
||||
if (token_values < 2) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantReverseOne),
|
||||
"you can't use a 'reversed' action when you supply fewer "
|
||||
"than two values for it to apply to",
|
||||
"since reversal is the process of exchanging them.");
|
||||
return;
|
||||
}
|
||||
kind *swap = token_value_kinds[0];
|
||||
token_value_kinds[0] = token_value_kinds[1];
|
||||
token_value_kinds[1] = swap;
|
||||
Emit::array_iname_entry(VERB_DIRECTIVE_REVERSE_iname);
|
||||
}
|
||||
|
||||
ActionSemantics::check_valid_application(cgl->resulting_action, token_values,
|
||||
token_value_kinds);
|
||||
break;
|
||||
case CG_IS_PROPERTY_NAME:
|
||||
case CG_IS_TOKEN:
|
||||
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_symbol(Emit::tree(), K_value, gprk->rv_s);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::place_label(Emit::tree(), fail_label);
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_symbol(Emit::tree(), K_value, gprk->rv_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_iname(Emit::tree(), K_value, Hierarchy::find(WN_HL));
|
||||
Produce::val_symbol(Emit::tree(), K_value, gprk->original_wn_s);
|
||||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case CG_IS_CONSULT:
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), OR_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_symbol(Emit::tree(), K_value, gprk->range_words_s);
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), MINUS_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(WN_HL));
|
||||
Produce::val_symbol(Emit::tree(), K_value, gprk->range_from_s);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::val_symbol(Emit::tree(), K_value, gprk->range_words_s);
|
||||
Produce::up(Emit::tree());
|
||||
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_symbol(Emit::tree(), K_value, gprk->rv_s);
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::place_label(Emit::tree(), fail_label);
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_symbol(Emit::tree(), K_value, gprk->rv_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_iname(Emit::tree(), K_value, Hierarchy::find(WN_HL));
|
||||
Produce::val_symbol(Emit::tree(), K_value, gprk->original_wn_s);
|
||||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case CG_IS_SUBJECT:
|
||||
UnderstandGeneralTokens::after_gl_failed(gprk, fail_label, cgl->pluralised);
|
||||
break;
|
||||
case CG_IS_VALUE:
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_iname(Emit::tree(), K_value, Hierarchy::find(PARSED_NUMBER_HL));
|
||||
RTCommandGrammars::emit_determination_type(&(cgl->cgl_type));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_object, Hierarchy::find(GPR_NUMBER_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::place_label(Emit::tree(), fail_label);
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_iname(Emit::tree(), K_value, Hierarchy::find(WN_HL));
|
||||
Produce::val_symbol(Emit::tree(), K_value, gprk->original_wn_s);
|
||||
Produce::up(Emit::tree());
|
||||
break;
|
||||
}
|
||||
|
||||
if ((cg_is == CG_IS_VALUE) && (GV_IS_VALUE_instance_mode)) {
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
}
|
||||
|
||||
current_label++;
|
||||
}
|
||||
|
||||
@ =
|
||||
typedef struct slash_gpr {
|
||||
struct parse_node *first_choice;
|
||||
struct parse_node *last_choice;
|
||||
struct inter_name *sgpr_iname;
|
||||
CLASS_DEFINITION
|
||||
} slash_gpr;
|
||||
|
||||
@ =
|
||||
void RTCommandGrammarLines::compile_token_line(gpr_kit *gprk, int code_mode, parse_node *pn, parse_node *pn_to, int cg_is, int consult_mode,
|
||||
int *token_values, kind **token_value_kinds, inter_symbol *group_wn_s, inter_symbol *fail_label) {
|
||||
int lexeme_equivalence_class = 0;
|
||||
int alternative_number = 0;
|
||||
int empty_text_allowed_in_lexeme = FALSE;
|
||||
|
||||
inter_symbol *next_reserved_label = NULL;
|
||||
inter_symbol *eog_reserved_label = NULL;
|
||||
for (; pn; pn = pn->next) {
|
||||
if ((UnderstandTokens::is_text(pn)) && (pn->next) &&
|
||||
(UnderstandTokens::is_literal(pn->next) == FALSE)) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_TextFollowedBy),
|
||||
"a '[text]' token must either match the end of some text, or "
|
||||
"be followed by definitely known wording",
|
||||
"since otherwise the run-time parser isn't good enough to "
|
||||
"make sense of things.");
|
||||
}
|
||||
|
||||
if ((Node::get_grammar_token_relation(pn)) && (cg_is != CG_IS_SUBJECT)) {
|
||||
if (problem_count == 0)
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_GrammarObjectlessRelation),
|
||||
"a grammar token in an 'Understand...' can only be based "
|
||||
"on a relation if it is to understand the name of a room or thing",
|
||||
"since otherwise there is nothing for the relation to be with.");
|
||||
continue;
|
||||
}
|
||||
|
||||
int first_token_in_lexeme = FALSE, last_token_in_lexeme = FALSE;
|
||||
|
||||
if (Annotations::read_int(pn, slash_class_ANNOT) != 0) { /* in a multi-token lexeme */
|
||||
if ((pn->next == NULL) ||
|
||||
(Annotations::read_int(pn->next, slash_class_ANNOT) !=
|
||||
Annotations::read_int(pn, slash_class_ANNOT)))
|
||||
last_token_in_lexeme = TRUE;
|
||||
if (Annotations::read_int(pn, slash_class_ANNOT) != lexeme_equivalence_class) {
|
||||
first_token_in_lexeme = TRUE;
|
||||
empty_text_allowed_in_lexeme =
|
||||
Annotations::read_int(pn, slash_dash_dash_ANNOT);
|
||||
}
|
||||
lexeme_equivalence_class = Annotations::read_int(pn, slash_class_ANNOT);
|
||||
if (first_token_in_lexeme) alternative_number = 1;
|
||||
else alternative_number++;
|
||||
} else { /* in a single-token lexeme */
|
||||
lexeme_equivalence_class = 0;
|
||||
first_token_in_lexeme = TRUE;
|
||||
last_token_in_lexeme = TRUE;
|
||||
empty_text_allowed_in_lexeme = FALSE;
|
||||
alternative_number = 1;
|
||||
}
|
||||
|
||||
inter_symbol *jump_on_fail = fail_label;
|
||||
|
||||
if (lexeme_equivalence_class > 0) {
|
||||
if (code_mode) {
|
||||
if (first_token_in_lexeme) {
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_symbol(Emit::tree(), K_value, gprk->group_wn_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(WN_HL));
|
||||
Produce::up(Emit::tree());
|
||||
}
|
||||
if (next_reserved_label) Produce::place_label(Emit::tree(), next_reserved_label);
|
||||
TEMPORARY_TEXT(L)
|
||||
WRITE_TO(L, ".group_%d_%d_%d", current_grammar_block, lexeme_equivalence_class, alternative_number+1);
|
||||
next_reserved_label = Produce::reserve_label(Emit::tree(), L);
|
||||
DISCARD_TEXT(L)
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_iname(Emit::tree(), K_value, Hierarchy::find(WN_HL));
|
||||
Produce::val_symbol(Emit::tree(), K_value, gprk->group_wn_s);
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
if ((last_token_in_lexeme == FALSE) || (empty_text_allowed_in_lexeme)) {
|
||||
jump_on_fail = next_reserved_label;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((empty_text_allowed_in_lexeme) && (code_mode == FALSE)) {
|
||||
slash_gpr *sgpr = CREATE(slash_gpr);
|
||||
sgpr->first_choice = pn;
|
||||
while ((pn->next) &&
|
||||
(Annotations::read_int(pn->next, slash_class_ANNOT) ==
|
||||
Annotations::read_int(pn, slash_class_ANNOT))) pn = pn->next;
|
||||
sgpr->last_choice = pn;
|
||||
package_request *PR = Hierarchy::local_package(SLASH_TOKENS_HAP);
|
||||
sgpr->sgpr_iname = Hierarchy::make_iname_in(SLASH_FN_HL, PR);
|
||||
Emit::array_iname_entry(sgpr->sgpr_iname);
|
||||
last_token_in_lexeme = TRUE;
|
||||
} else {
|
||||
kind *grammar_token_kind =
|
||||
UnderstandTokens::compile(gprk, pn, code_mode, jump_on_fail, consult_mode);
|
||||
if (grammar_token_kind) {
|
||||
if (token_values) {
|
||||
if (*token_values == 2) {
|
||||
internal_error(
|
||||
"There can be at most two value-producing tokens and this "
|
||||
"should have been detected earlier.");
|
||||
return;
|
||||
}
|
||||
token_value_kinds[(*token_values)++] = grammar_token_kind;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (lexeme_equivalence_class > 0) {
|
||||
if (code_mode) {
|
||||
if (last_token_in_lexeme) {
|
||||
if (empty_text_allowed_in_lexeme) {
|
||||
@<Jump to end of group@>;
|
||||
if (next_reserved_label)
|
||||
Produce::place_label(Emit::tree(), next_reserved_label);
|
||||
next_reserved_label = NULL;
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_iname(Emit::tree(), K_value, Hierarchy::find(WN_HL));
|
||||
Produce::val_symbol(Emit::tree(), K_value, gprk->group_wn_s);
|
||||
Produce::up(Emit::tree());
|
||||
}
|
||||
if (eog_reserved_label) Produce::place_label(Emit::tree(), eog_reserved_label);
|
||||
eog_reserved_label = NULL;
|
||||
} else {
|
||||
@<Jump to end of group@>;
|
||||
}
|
||||
} else {
|
||||
if (last_token_in_lexeme == FALSE) Emit::array_iname_entry(VERB_DIRECTIVE_SLASH_iname);
|
||||
}
|
||||
}
|
||||
|
||||
if (pn == pn_to) break;
|
||||
}
|
||||
}
|
||||
|
||||
@<Jump to end of group@> =
|
||||
if (eog_reserved_label == NULL) {
|
||||
TEMPORARY_TEXT(L)
|
||||
WRITE_TO(L, ".group_%d_%d_end",
|
||||
current_grammar_block, lexeme_equivalence_class);
|
||||
eog_reserved_label = Produce::reserve_label(Emit::tree(), L);
|
||||
}
|
||||
Produce::inv_primitive(Emit::tree(), JUMP_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::lab(Emit::tree(), eog_reserved_label);
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
@ =
|
||||
void RTCommandGrammarLines::compile_slash_gprs(void) {
|
||||
slash_gpr *sgpr;
|
||||
LOOP_OVER(sgpr, slash_gpr) {
|
||||
packaging_state save = Routines::begin(sgpr->sgpr_iname);
|
||||
gpr_kit gprk = UnderstandValueTokens::new_kit();
|
||||
UnderstandValueTokens::add_original(&gprk);
|
||||
UnderstandValueTokens::add_standard_set(&gprk);
|
||||
|
||||
RTCommandGrammarLines::compile_token_line(&gprk, TRUE, sgpr->first_choice, sgpr->last_choice, CG_IS_TOKEN, FALSE, NULL, NULL, gprk.group_wn_s, NULL);
|
||||
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Routines::end(save);
|
||||
}
|
||||
}
|
|
@ -133,7 +133,7 @@ void RTCommandGrammars::compile_all(void) {
|
|||
if (cg->cg_is == CG_IS_PROPERTY_NAME)
|
||||
RTCommandGrammars::compile(cg); /* makes routines for use in |parse_name| */
|
||||
|
||||
UnderstandLines::compile_slash_gprs();
|
||||
RTCommandGrammarLines::compile_slash_gprs();
|
||||
}
|
||||
|
||||
@ Some tokens require suitable I6 routines to have already been compiled,
|
||||
|
@ -209,9 +209,9 @@ void RTCommandGrammars::cg_compile_parse_name_lines(gpr_kit *gprk, command_gramm
|
|||
|
||||
=
|
||||
void RTCommandGrammars::cg_compile_lines(gpr_kit *gprk, command_grammar *cg) {
|
||||
UnderstandLines::list_assert_ownership(cg->first_line, cg); /* Mark for later indexing */
|
||||
CommandGrammars::sort_command_grammar(cg); /* Phase III for the GLs in the CG happens here */
|
||||
UnderstandLines::sorted_line_list_compile(gprk, cg->sorted_first_line,
|
||||
CommandsIndex::list_assert_ownership(cg->first_line, cg); /* Mark for later indexing */
|
||||
CommandGrammars::sort_command_grammar(cg); /* Phase III for the CGLs in the CG happens here */
|
||||
RTCommandGrammarLines::sorted_line_list_compile(gprk, cg->sorted_first_line,
|
||||
cg->cg_is, cg, CommandGrammars::cg_is_genuinely_verbal(cg)); /* And Phase IV here */
|
||||
}
|
||||
|
||||
|
@ -235,7 +235,7 @@ void RTCommandGrammars::compile(command_grammar *cg) {
|
|||
|
||||
current_sentence = cg->where_cg_created;
|
||||
|
||||
UnderstandLines::reset_labels();
|
||||
RTCommandGrammarLines::reset_labels();
|
||||
switch(cg->cg_is) {
|
||||
case CG_IS_COMMAND: {
|
||||
package_request *PR = Hierarchy::synoptic_package(COMMANDS_HAP);
|
||||
|
@ -343,7 +343,7 @@ void RTCommandGrammars::compile_iv(gpr_kit *gprk, command_grammar *cg) {
|
|||
if (cg->first_line == NULL) return;
|
||||
LOGIF(GRAMMAR, "Compiling command grammar $G\n", cg);
|
||||
current_sentence = cg->where_cg_created;
|
||||
UnderstandLines::reset_labels();
|
||||
RTCommandGrammarLines::reset_labels();
|
||||
if (cg->cg_is != CG_IS_VALUE) internal_error("not iv");
|
||||
RTCommandGrammars::cg_compile_lines(gprk, cg);
|
||||
}
|
||||
|
|
|
@ -79,3 +79,4 @@ Chapter 5: Plugin Support
|
|||
Action Patterns
|
||||
Going
|
||||
Command Grammars
|
||||
Command Grammar Lines
|
||||
|
|
Loading…
Reference in a new issue