1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-01 06:24:58 +03:00

Reorganised parsing properties of objects

This commit is contained in:
Graham Nelson 2021-05-22 22:40:05 +01:00
parent 551401e4bd
commit 87fe04d58b
63 changed files with 2709 additions and 2491 deletions

View file

@ -340,7 +340,6 @@ We begin with <a href="index.html" class="internal">core</a> itself.
<span class="definition-keyword">enum</span> <span class="constant-syntax">noun_filter_token_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">parentage_here_inference_data_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">parentage_inference_data_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">parse_name_notice_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">parsing_data_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">parsing_pp_data_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">part_of_inference_data_CLASS</span>
@ -376,7 +375,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">noun_filter_token</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">parentage_here_inference_data</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">parentage_inference_data</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_name_notice</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">parsing_data</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">parsing_pp_data</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">part_of_inference_data</span><span class="plain-syntax">)</span>

View file

@ -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, 4/gng, 5/cg, 5/cgl, 5/ts 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, 4/gng, 5/pp, 5/cg, 5/cgl, 5/ts and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;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

View file

@ -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, 4/gng, 5/cg, 5/cgl, 5/ts 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, 4/gng, 5/pp, 5/cg, 5/cgl, 5/ts 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>&#167;2. </b>We are allowed to give names to certain kinds of behaviour by "characterising"
an action.
</p>

View file

@ -144,7 +144,7 @@ form, so this is not as bloated a structure as it looks.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure command_grammar is accessed in 4/act, 4/nap, 4/gng, 5/cgl, 5/ts and here.</li></ul>
<ul class="endnotetexts"><li>The structure command_grammar is accessed in 4/act, 4/nap, 4/gng, 5/pp, 5/cgl, 5/ts and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>We begin as usual with a constructor and some debug log tracing.
</p>
@ -398,10 +398,10 @@ in any case for those.
<a href="#fnref:2" title="return to text"> &#x21A9;</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('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">&#167;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">)-&gt;</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">)-&gt;</span><span class="element-syntax">understand_as_this_object</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="element-syntax">understand_as_this_subject</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">)-&gt;</span><span class="element-syntax">understand_as_this_subject</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>
<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">)-&gt;</span><span class="identifier-syntax">understand_as_this_object</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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_subject</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">-&gt;</span><span class="element-syntax">subj_understood</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -140,7 +140,7 @@ removing it from action. That's a feature only seen in lines for
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">cg_line</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure cg_line is accessed in 4/ap, 4/act, 4/as, 4/nap, 4/gng, 5/us, 5/cg, 5/ts and here.</li></ul>
<ul class="endnotetexts"><li>The structure cg_line is accessed in 4/ap, 4/act, 4/as, 4/nap, 4/gng, 5/pp, 5/us, 5/cg, 5/ts and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -109,7 +109,6 @@ for generating that is a little delicate.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="5-us.html#SP2" class="function-link"><span class="function-syntax">Understand::traverse</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">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><span class="identifier-syntax">UnderstandGeneralTokens::write_parse_name_routines</span><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>
@ -139,13 +138,15 @@ and in particular, to every object instance and every kind of object.
</pre>
<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">parsing_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="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">understand_as_this_object</span><span class="plain-syntax">; </span><span class="comment-syntax"> grammar for parsing the name at run-time</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">; </span><span class="comment-syntax"> grammar for parsing the name at run-time</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parsing_compilation_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">compilation_data</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">parsing_data</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">parsing_data</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPlugin::new_data</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">parsing_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pd</span><span class="plain-syntax">-&gt;</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="identifier-syntax">pd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">understand_as_this_subject</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">pd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">compilation_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Name::new_compilation_data</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">pd</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -154,7 +155,7 @@ and in particular, to every object instance and every kind of object.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure parsing_data is accessed in 5/cg and here.</li></ul>
<ul class="endnotetexts"><li>The structure parsing_data is accessed in 4/act, 4/nap, 4/gng, 5/cg, 5/cgl, 5/ts and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>We make use of a new kind of rvalue in this plugin: <span class="extract"><span class="extract-syntax">K_understanding</span></span>. This
is created in <a href="../kinds-module/2-fk.html" class="internal">Familiar Kinds (in kinds)</a>, not here, but we do have to provide
the following functions to handle its constant rvalues. These correspond to
@ -215,7 +216,7 @@ the Inter command parser at runtime, whose data is typeless.
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">, </span><span class="identifier-syntax">NonlocalVariables::kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">var</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTParsing::understood_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">var</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTVariables::understood_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">var</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::allow_to_be_zero</span><span class="plain-syntax">(</span><span class="identifier-syntax">var</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
@ -240,7 +241,7 @@ and is in that sense (okay, ironically) "nameless".
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPlugin::name_property</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">ParsingPlugin::name_property</span></span>:<br/><a href="5-pp.html#SP9_1">&#167;9.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P_name</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ValueProperties::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"name"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTParsing::name_iname</span><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTProperties::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_name</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">P_name</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -294,7 +295,7 @@ get the <span class="extract"><span class="extract-syntax">name</span></span> pr
<span class="plain-syntax"> </span><span class="identifier-syntax">Projects::get_language_of_play</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">()));</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ValueProperties::assert</span><span class="plain-syntax">(</span><a href="5-pp.html#SP8" class="function-link"><span class="function-syntax">ParsingPlugin::name_property</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTParsing::name_property_array</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">PW</span><span class="plain-syntax">, </span><span class="identifier-syntax">from_kind</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Name::name_property_array</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">PW</span><span class="plain-syntax">, </span><span class="identifier-syntax">from_kind</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-pp.html#SP9">&#167;9</a>.</li></ul>
@ -306,7 +307,7 @@ where grammar has specified a need. (By default, this will not happen.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">UnderstandGeneralTokens::compile_parse_name_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ParseName::compile_if_needed</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">S</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ValueProperties::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_parse_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>

View file

@ -249,18 +249,16 @@ kinds of value:
<span class="plain-syntax"> </span><a href="2-cr.html#SP3" class="function-link"><span class="function-syntax">CompileRvalues::text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_of_constant</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_understanding</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</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">"Text no longer available for CONSTANT/UNDERSTANDING"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">RTParsing::compile_understanding</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-cr.html#SP4" class="function-link"><span class="function-syntax">CompileRvalues::compile_understanding</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Holsters::non_void_context</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Holsters::holster_pair</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_of_constant</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_use_option</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_use_option</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::holster_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTUseOptions::uo_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">));</span>
@ -463,6 +461,40 @@ compiler, rather than parsed from the source.)
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::holster_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">val_iname</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-cr.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>Values for "understanding" refer to command grammar. We cache them as they
occur in the source text because they can compile to a fairly large slice of
code, and we don't want to repeat that:
</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">cached_understanding</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">understanding_text</span><span class="plain-syntax">; </span><span class="comment-syntax"> word range of the understanding text</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">cu_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> function to test this</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">cached_understanding</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CompileRvalues::compile_understanding</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">CompileRvalues::compile_understanding</span></span>:<br/><a href="2-cr.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val2</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="function-syntax">&lt;subject-pronoun&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">val1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">; *</span><span class="identifier-syntax">val2</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">cached_understanding</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cu</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">cu</span><span class="plain-syntax">, </span><span class="reserved-syntax">cached_understanding</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">cu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">understanding_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::to_value_pair</span><span class="plain-syntax">(</span><span class="identifier-syntax">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">val2</span><span class="plain-syntax">, </span><span class="identifier-syntax">cu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">cu_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="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="identifier-syntax">Understand::consultation</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RTCommandGrammars::consult_iname</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">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cu</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">cached_understanding</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">understanding_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">cu_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::to_value_pair</span><span class="plain-syntax">(</span><span class="identifier-syntax">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">val2</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</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="2-cv.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-cv.html">cv</a></li><li class="progresscurrent">cr</li><li class="progresssection"><a href="2-cl.html">cl</a></li><li class="progresssection"><a href="2-cc.html">cc</a></li><li class="progresschapter"><a href="3-sf.html">3</a></li><li class="progresschapter"><a href="4-cs.html">4</a></li><li class="progresschapter"><a href="5-cbal.html">5</a></li><li class="progressnext"><a href="2-cl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -243,7 +243,7 @@ but that's now easy.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ni.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresscurrent">cu</li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-emt.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ni.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresscurrent">cu</li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-emt.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -420,7 +420,7 @@ names are not.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-dv.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-th.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresscurrent">dv</li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-es.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-th.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresscurrent">dv</li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-es.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -92,7 +92,7 @@ enforced; it's fine to store arbitrary data with <span class="extract"><span cla
</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">EmitArrays::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">EmitArrays::begin</span></span>:<br/>Short Names - <a href="2-sn.html#SP4">&#167;4</a><br/>List Literals - <a href="4-ll.html#SP1">&#167;1</a>, <a href="4-ll.html#SP2">&#167;2</a><br/>Text Literals - <a href="4-tl.html#SP1">&#167;1</a><br/>Text Substitutions - <a href="4-ts.html#SP1">&#167;1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Door Instances - <a href="5-di.html#SP6">&#167;6</a><br/>Multimedia - <a href="5-mlt.html#SP2_2">&#167;2.2</a><br/>Relations - <a href="5-rlt.html#SP6_3">&#167;6.3</a>, <a href="5-rlt.html#SP7">&#167;7</a>, <a href="5-rlt.html#SP10">&#167;10</a>, <a href="5-rlt.html#SP10_3">&#167;10.3</a><br/>Kind IDs - <a href="5-ki.html#SP9_1">&#167;9.1</a><br/>Test Scripts - <a href="5-ts.html#SP4">&#167;4</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP1">&#167;1</a><br/>Emit Property Values - <a href="7-epv.html#SP12">&#167;12</a><br/>Parsing - <a href="7-prs.html#SP2">&#167;2</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">EmitArrays::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">EmitArrays::begin</span></span>:<br/>Short Names - <a href="2-sn.html#SP4">&#167;4</a><br/>List Literals - <a href="4-ll.html#SP1">&#167;1</a>, <a href="4-ll.html#SP2">&#167;2</a><br/>Text Literals - <a href="4-tl.html#SP1">&#167;1</a><br/>Text Substitutions - <a href="4-ts.html#SP1">&#167;1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Door Instances - <a href="5-di.html#SP6">&#167;6</a><br/>Multimedia - <a href="5-mlt.html#SP2_2">&#167;2.2</a><br/>Relations - <a href="5-rlt.html#SP6_3">&#167;6.3</a>, <a href="5-rlt.html#SP7">&#167;7</a>, <a href="5-rlt.html#SP10">&#167;10</a>, <a href="5-rlt.html#SP10_3">&#167;10.3</a><br/>Kind IDs - <a href="5-ki.html#SP9_1">&#167;9.1</a><br/>Test Scripts - <a href="5-ts.html#SP4">&#167;4</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP1">&#167;1</a><br/>Name Properties - <a href="6-np.html#SP4">&#167;4</a><br/>Emit Property Values - <a href="7-epv.html#SP12">&#167;12</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::enter_home_of</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ea.html#SP9" class="function-link"><span class="function-syntax">EmitArrays::begin_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">;</span>
@ -181,13 +181,13 @@ which would be a typesafe list in I7, so they can be absolutely any data,
<span class="plain-syntax"> </span><a href="2-ea.html#SP10" class="function-link"><span class="function-syntax">EmitArrays::entry_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitArrays::dword_entry</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">EmitArrays::dword_entry</span></span>:<br/>Parsing - <a href="7-prs.html#SP2">&#167;2</a><br/>Command Grammars - <a href="7-cg.html#SP4">&#167;4</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">&#167;9</a>, <a href="7-cgl.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitArrays::dword_entry</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">EmitArrays::dword_entry</span></span>:<br/>Name Properties - <a href="6-np.html#SP4">&#167;4</a><br/>Command Grammars - <a href="7-cg.html#SP4">&#167;4</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">&#167;9</a>, <a href="7-cgl.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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::dword_value</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), &amp;</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">content</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ea.html#SP10" class="function-link"><span class="function-syntax">EmitArrays::entry_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitArrays::plural_dword_entry</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">EmitArrays::plural_dword_entry</span></span>:<br/>Parsing - <a href="7-prs.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitArrays::plural_dword_entry</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">EmitArrays::plural_dword_entry</span></span>:<br/>Name Properties - <a href="6-np.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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::plural_dword_value</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), &amp;</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">content</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ea.html#SP10" class="function-link"><span class="function-syntax">EmitArrays::entry_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
@ -213,7 +213,7 @@ difference to compiled code.
</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">EmitArrays::end</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">EmitArrays::end</span></span>:<br/>Short Names - <a href="2-sn.html#SP4">&#167;4</a><br/>List Literals - <a href="4-ll.html#SP1">&#167;1</a>, <a href="4-ll.html#SP2">&#167;2</a><br/>Text Literals - <a href="4-tl.html#SP1">&#167;1</a><br/>Text Substitutions - <a href="4-ts.html#SP1">&#167;1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Relation Literals - <a href="4-rl.html#SP1">&#167;1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">&#167;1</a><br/>Door Instances - <a href="5-di.html#SP6">&#167;6</a><br/>Multimedia - <a href="5-mlt.html#SP2_1">&#167;2.1</a>, <a href="5-mlt.html#SP2_2">&#167;2.2</a><br/>Tables - <a href="5-tbl.html#SP2_1_1">&#167;2.1.1</a>, <a href="5-tbl.html#SP2_1_1_1">&#167;2.1.1.1</a>, <a href="5-tbl.html#SP2_2">&#167;2.2</a><br/>Relations - <a href="5-rlt.html#SP6_3">&#167;6.3</a>, <a href="5-rlt.html#SP6_3_2">&#167;6.3.2</a>, <a href="5-rlt.html#SP7">&#167;7</a>, <a href="5-rlt.html#SP10">&#167;10</a>, <a href="5-rlt.html#SP10_3">&#167;10.3</a><br/>Kind IDs - <a href="5-ki.html#SP9_1">&#167;9.1</a><br/>Test Scripts - <a href="5-ts.html#SP4">&#167;4</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP1">&#167;1</a><br/>Emit Property Values - <a href="7-epv.html#SP12">&#167;12</a><br/>Parsing - <a href="7-prs.html#SP2">&#167;2</a><br/>Command Grammars - <a href="7-cg.html#SP7">&#167;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">EmitArrays::end</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">EmitArrays::end</span></span>:<br/>Short Names - <a href="2-sn.html#SP4">&#167;4</a><br/>List Literals - <a href="4-ll.html#SP1">&#167;1</a>, <a href="4-ll.html#SP2">&#167;2</a><br/>Text Literals - <a href="4-tl.html#SP1">&#167;1</a><br/>Text Substitutions - <a href="4-ts.html#SP1">&#167;1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Relation Literals - <a href="4-rl.html#SP1">&#167;1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">&#167;1</a><br/>Door Instances - <a href="5-di.html#SP6">&#167;6</a><br/>Multimedia - <a href="5-mlt.html#SP2_1">&#167;2.1</a>, <a href="5-mlt.html#SP2_2">&#167;2.2</a><br/>Tables - <a href="5-tbl.html#SP2_1_1">&#167;2.1.1</a>, <a href="5-tbl.html#SP2_1_1_1">&#167;2.1.1.1</a>, <a href="5-tbl.html#SP2_2">&#167;2.2</a><br/>Relations - <a href="5-rlt.html#SP6_3">&#167;6.3</a>, <a href="5-rlt.html#SP6_3_2">&#167;6.3.2</a>, <a href="5-rlt.html#SP7">&#167;7</a>, <a href="5-rlt.html#SP10">&#167;10</a>, <a href="5-rlt.html#SP10_3">&#167;10.3</a><br/>Kind IDs - <a href="5-ki.html#SP9_1">&#167;9.1</a><br/>Test Scripts - <a href="5-ts.html#SP4">&#167;4</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP1">&#167;1</a><br/>Name Properties - <a href="6-np.html#SP4">&#167;4</a><br/>Emit Property Values - <a href="7-epv.html#SP12">&#167;12</a><br/>Command Grammars - <a href="7-cg.html#SP7">&#167;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><a href="2-ea.html#SP11" class="function-link"><span class="function-syntax">EmitArrays::end_inner</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::exit</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -349,7 +349,7 @@ is completely emitted before another one is.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ec.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresscurrent">ea</li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-int.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ec.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresscurrent">ea</li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-int.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

File diff suppressed because one or more lines are too long

View file

@ -125,7 +125,7 @@ reference points. But as newly-created packages they are initially empty.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::enclosure</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" 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">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::new_packaging_state</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">Emit::new_packaging_state</span></span>:<br/>Rulebooks - <a href="5-rlb.html#SP6_4_1">&#167;6.4.1</a><br/>Command Grammars - <a href="7-cg.html#SP7">&#167;7</a><br/>General Parsing Routines - <a href="7-gpr.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::new_packaging_state</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">Emit::new_packaging_state</span></span>:<br/>Rulebooks - <a href="5-rlb.html#SP6_4_1">&#167;6.4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::stateless</span><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
@ -157,7 +157,7 @@ what package it belongs to, the "context" referred to below:
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::stvp_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inter::Bookmarks::package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::at</span></a><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">Emit::to_value_pair</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">Emit::to_value_pair</span></span>:<br/><a href="2-emt.html#SP2">&#167;2</a><br/>Default Values - <a href="2-dv.html#SP2_1">&#167;2.1</a>, <a href="2-dv.html#SP2_2">&#167;2.2</a>, <a href="2-dv.html#SP2_4">&#167;2.4</a>, <a href="2-dv.html#SP2_6">&#167;2.6</a>, <a href="2-dv.html#SP2_7">&#167;2.7</a>, <a href="2-dv.html#SP2_8">&#167;2.8</a><br/>Parsing - <a href="7-prs.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v2</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Emit::to_value_pair</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">Emit::to_value_pair</span></span>:<br/><a href="2-emt.html#SP2">&#167;2</a><br/>Default Values - <a href="2-dv.html#SP2_1">&#167;2.1</a>, <a href="2-dv.html#SP2_2">&#167;2.2</a>, <a href="2-dv.html#SP2_4">&#167;2.4</a>, <a href="2-dv.html#SP2_6">&#167;2.6</a>, <a href="2-dv.html#SP2_7">&#167;2.7</a>, <a href="2-dv.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v2</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="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::stvp_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">), </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inter::Bookmarks::package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::at</span></a><span class="plain-syntax">()));</span>
<span class="plain-syntax">}</span>
@ -593,7 +593,7 @@ assimilating during linking.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-cu.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresscurrent">emt</li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-ec.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-cu.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresscurrent">emt</li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-ec.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -128,7 +128,7 @@ data, not merely the pointer to them, which is a "deep copy".
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-dv.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresscurrent">es</li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-kd.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-dv.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresscurrent">es</li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-kd.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -0,0 +1,266 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>General Parsing Routines</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 'General Parsing Routines' 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#2">Chapter 2: Emission</a></li><li><b>General Parsing Routines</b></li></ul></div>
<p class="purpose">To compile "general parsing routines", or GPRs, which are runtime functions used to match noun phrases in the command parser.</p>
<ul class="toc"><li><a href="2-gpr.html#SP1">&#167;1. Introduction</a></li><li><a href="2-gpr.html#SP2">&#167;2. GPR kits</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Introduction. </b>At runtime, the command parser handles noun phrases in two ways. Simple
nouns for an object are handled by giving it a <span class="extract"><span class="extract-syntax">name</span></span> property listing
some dictionary words which could refer to it &mdash; see <a href="6-np.html" class="internal">Name Properties</a>.
</p>
<p class="commentary">More complex nouns are handled with Inter functions called "general parsing
routines", or GPRs: the term is traditional and goes back to Inform 1 to 6.
GPRs are used for parsing values of kinds other than objects, too; in
particular, each notation for a literal value needs its own GPR &mdash; see
<a href="5-lp.html" class="internal">Literal Patterns</a>.
</p>
<p class="commentary">The GPRs compiled automatically by today's Inform follow the same conventions
and specification, so the tutorials in the Inform 6 manual, the DM4, may help
tp explain what we do in this section of code. No tutorials are needed today
because in Inform 7 all of the many GPRs in a typical story file are compiled
automatically, so that the story's author is not really aware of them at all.
</p>
<p class="commentary">To compile a GPR, Inform has to:
</p>
<ul class="items"><li>&#9679; work out where to put it, i.e., choose an <span class="extract"><span class="extract-syntax">inter_name</span></span>;
</li><li>&#9679; open a function body there;
</li><li>&#9679; use a <a href="2-gpr.html#SP2" class="internal">gpr_kit</a> to give it local variables as needed;
</li><li>&#9679; compile a "GPR head";
</li><li>&#9679; compile code which actually looks at the stream of command words;
</li><li>&#9679; compile a "GPR tail";
</li><li>&#9679; and close the function body.
</li></ul>
<p class="commentary">The "head" and "tail" parts of a GPR come in several sorts, compiled by functions
below, and they need to match each other.
</p>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. GPR kits. </b>Since GPRs are needed for several different purposes, we provide a general
API for compiling them, based around the idea of a "GPR kit" &mdash; slogan, it's
everything you need to compile your own GPR.
</p>
<p class="commentary">This is not an elegant structure. It simply keeps track of the many local
variables needed inside GPRs, which tend to be large, wrangly functions:
</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">gpr_kit</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">cur_addr_s</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">cur_len_s</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">cur_word_s</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">f_s</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">g_s</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">group_wn_s</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">instance_s</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">matched_number_s</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">mid_word_s</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">n_s</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">original_wn_s</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">pass_s</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">pass1_n_s</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">pass2_n_s</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">range_from_s</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">range_words_s</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">rv_s</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rv_lv</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">sgn_s</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">spn_s</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">ss_s</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">tot_s</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">try_from_wn_s</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">v_s</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">w_s</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">wpos_s</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">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>
</pre>
<ul class="endnotetexts"><li>The structure gpr_kit is accessed in 5/lp, 6/pnp, 7/cg, 7/cgl, 7/tpv and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>The idea is to create a new kit which is initially empty:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> </span><span class="function-syntax">GPRs::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">GPRs::new_kit</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a><br/>Parse Name Properties - <a href="6-pnp.html#SP2">&#167;2</a>, <a href="6-pnp.html#SP3">&#167;3</a><br/>Command Grammars - <a href="7-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">&#167;8</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</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">kit</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>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">.</span><span class="element-syntax">cur_word_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">f_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">g_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">kit</span><span class="plain-syntax">.</span><span class="element-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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">instance_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">matched_number_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">mid_word_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">n_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">original_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">pass_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">pass1_n_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">pass2_n_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">range_from_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">range_words_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">rv_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">rv_lv</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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">sgn_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">spn_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">ss_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">tot_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">try_from_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">v_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">w_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">wpos_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">kit</span><span class="plain-syntax">.</span><span class="element-syntax">x_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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>Then, if you then need a local variable in the GPR you're making, declare it
and write its symbol to the appropriate field. But this is best done with the
following convenience functions.
</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">GPRs::add_standard_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">GPRs::add_standard_vars</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a><br/>Command Grammars - <a href="7-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">&#167;8</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">group_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">v_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">w_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rv_lv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"rv"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rv_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rv_lv</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">GPRs::add_instance_var</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">GPRs::add_instance_var</span></span>:<br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">instance_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_other_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"instance"</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">GPRs::add_range_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">GPRs::add_range_vars</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">range_from_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"range_from"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"call parameter: word number of snippet start"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">range_words_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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="plain-syntax"> </span><span class="identifier-syntax">I</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">GPRs::add_original_var</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">GPRs::add_original_var</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a><br/>Command Grammars - <a href="7-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">&#167;8</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">original_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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">GPRs::add_LP_vars</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">GPRs::add_LP_vars</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">wpos_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"wpos"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">mid_word_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"mid_word"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">matched_number_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"matched_number"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">cur_word_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"cur_word"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">cur_len_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"cur_len"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">cur_addr_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"cur_addr"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sgn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"sgn"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">tot_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"tot"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">f_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"f"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">x_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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">GPRs::add_parse_name_vars</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">GPRs::add_parse_name_vars</span></span>:<br/>Parse Name Properties - <a href="6-pnp.html#SP4">&#167;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">kit</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">original_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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="identifier-syntax">I</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">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">group_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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">I</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">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">try_from_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"position to try matching from"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">n_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"number of words matched"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">f_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"f"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"flag: sufficiently good match found to justify success"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">w_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"for use by individual grammar lines"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rv_lv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"rv"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rv_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rv_lv</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">g_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"g"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"temporary: success flag for parsing visibles"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ss_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"ss"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"temporary: saves 'self' in distinguishing visibles"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">spn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"spn"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"temporary: saves 'parsed_number' in parsing visibles"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">pass_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"pass"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"pass counter (1 to 3)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">pass1_n_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"pass1_n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"value of n recorded during pass 1"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">pass2_n_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"value of n recorded during pass 2"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-sn.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresscurrent">gpr</li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="3-gm.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -130,7 +130,7 @@ ever change our minds about that.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-sc.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresscurrent">hnae</li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-sn.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-sc.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresscurrent">hnae</li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-sn.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

File diff suppressed because one or more lines are too long

View file

@ -300,7 +300,7 @@ to reject it again with a problem message.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-int.html#SP4">&#167;4</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ea.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresscurrent">int</li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-sv.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ea.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresscurrent">int</li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-sv.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -333,7 +333,7 @@ source text.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-kd.html#SP9">&#167;9</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-es.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresscurrent">kd</li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-sc.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-es.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresscurrent">kd</li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-sc.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -145,7 +145,7 @@ mutate the name in order to achieve that uniqueness.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-hrr.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresscurrent">ni</li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-cu.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-hrr.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresscurrent">ni</li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-cu.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -510,7 +510,7 @@ turn by turn.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-sc.html#SP6_2">&#167;6.2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-kd.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresscurrent">sc</li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-hnae.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-kd.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresscurrent">sc</li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-hnae.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -232,7 +232,7 @@ short name, and <span class="extract"><span class="extract-syntax">FALSE</span><
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-sn.html#SP4">&#167;4</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-hnae.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresscurrent">sn</li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="3-gm.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-hnae.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresscurrent">sn</li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-gpr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -168,7 +168,7 @@ need to come into being.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-sv.html#SP1">&#167;1</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-int.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresscurrent">sv</li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-th.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-int.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresscurrent">sv</li><li class="progresssection"><a href="2-th.html">th</a></li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-th.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -216,7 +216,7 @@ in <a href="../BasicInformKit/S-flx.html" class="internal">Flex (in BasicInformK
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-sv.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresscurrent">th</li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-dv.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-sv.html">&#10094;</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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hrr.html">hrr</a></li><li class="progresssection"><a href="2-ni.html">ni</a></li><li class="progresssection"><a href="2-cu.html">cu</a></li><li class="progresssection"><a href="2-emt.html">emt</a></li><li class="progresssection"><a href="2-ec.html">ec</a></li><li class="progresssection"><a href="2-ea.html">ea</a></li><li class="progresssection"><a href="2-int.html">int</a></li><li class="progresssection"><a href="2-sv.html">sv</a></li><li class="progresscurrent">th</li><li class="progresssection"><a href="2-dv.html">dv</a></li><li class="progresssection"><a href="2-es.html">es</a></li><li class="progresssection"><a href="2-kd.html">kd</a></li><li class="progresssection"><a href="2-sc.html">sc</a></li><li class="progresssection"><a href="2-hnae.html">hnae</a></li><li class="progresssection"><a href="2-sn.html">sn</a></li><li class="progresssection"><a href="2-gpr.html">gpr</a></li><li class="progresschapter"><a href="3-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="2-dv.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -190,7 +190,7 @@ in the VM can be added to it without it becoming negative.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-sn.html">&#10094;</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="progresscurrentchapter">3</li><li class="progresscurrent">gm</li><li class="progresssection"><a href="3-cm.html">cm</a></li><li class="progresssection"><a href="3-uo.html">uo</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="3-cm.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-gpr.html">&#10094;</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="progresscurrentchapter">3</li><li class="progresscurrent">gm</li><li class="progresssection"><a href="3-cm.html">cm</a></li><li class="progresssection"><a href="3-uo.html">uo</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="3-cm.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -96,7 +96,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_iname</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="function-syntax">RTInstances::package</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">RTInstances::package</span></span>:<br/><a href="5-ins.html#SP2_1">&#167;2.1</a><br/>Short Names - <a href="2-sn.html#SP3">&#167;3</a><br/>Backdrop Instances - <a href="5-bi.html#SP1">&#167;1</a><br/>Door Instances - <a href="5-di.html#SP2">&#167;2</a>, <a href="5-di.html#SP4">&#167;4</a>, <a href="5-di.html#SP6">&#167;6</a><br/>Region Instances - <a href="5-ri.html#SP1">&#167;1</a><br/>Scene Instances - <a href="5-si.html#SP3">&#167;3</a>, <a href="5-si.html#SP7">&#167;7</a><br/>Multimedia - <a href="5-mlt.html#SP1">&#167;1</a>, <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Emit Property Values - <a href="7-epv.html#SP3">&#167;3</a>, <a href="7-epv.html#SP12">&#167;12</a><br/>Parsing - <a href="7-prs.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::package</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">RTInstances::package</span></span>:<br/><a href="5-ins.html#SP2_1">&#167;2.1</a><br/>Short Names - <a href="2-sn.html#SP3">&#167;3</a><br/>Backdrop Instances - <a href="5-bi.html#SP1">&#167;1</a><br/>Door Instances - <a href="5-di.html#SP2">&#167;2</a>, <a href="5-di.html#SP4">&#167;4</a>, <a href="5-di.html#SP6">&#167;6</a><br/>Region Instances - <a href="5-ri.html#SP1">&#167;1</a><br/>Scene Instances - <a href="5-si.html#SP3">&#167;3</a>, <a href="5-si.html#SP7">&#167;7</a><br/>Multimedia - <a href="5-mlt.html#SP1">&#167;1</a>, <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Emit Property Values - <a href="7-epv.html#SP3">&#167;3</a>, <a href="7-epv.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -190,7 +190,7 @@ of the kind which the constructor makes:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_kind_GPR_iname</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">RTKindConstructors::get_kind_GPR_iname</span></span>:<br/>Command Grammar Lines - <a href="7-cgl.html#SP10">&#167;10</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP2">&#167;2</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">&#167;1</a><br/>General Parsing Routines - <a href="7-gpr.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_kind_GPR_iname</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">RTKindConstructors::get_kind_GPR_iname</span></span>:<br/>Parse Name Properties - <a href="6-pnp.html#SP10">&#167;10</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">&#167;10</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP2">&#167;2</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">&#167;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="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</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">kc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">kind_GPR_iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
@ -201,7 +201,7 @@ of the kind which the constructor makes:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">kc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">kind_GPR_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_instance_GPR_iname</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">RTKindConstructors::get_instance_GPR_iname</span></span>:<br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">&#167;1</a><br/>General Parsing Routines - <a href="7-gpr.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_instance_GPR_iname</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">RTKindConstructors::get_instance_GPR_iname</span></span>:<br/>Parse Name Properties - <a href="6-pnp.html#SP10">&#167;10</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">&#167;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="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</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">kc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">instance_GPR_iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
@ -346,14 +346,14 @@ of the kind which the constructor makes:
<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">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">debug_print_fn_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_explicit_I6_GPR_iname</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">RTKindConstructors::get_explicit_I6_GPR_iname</span></span>:<br/>Noun Filter Tokens - <a href="7-nft.html#SP2">&#167;2</a><br/>General Parsing Routines - <a href="7-gpr.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_explicit_I6_GPR_iname</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">RTKindConstructors::get_explicit_I6_GPR_iname</span></span>:<br/>Parse Name Properties - <a href="6-pnp.html#SP10">&#167;10</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="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">"RTKindConstructors::get_explicit_I6_GPR on null 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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">explicit_GPR_identifier</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Produce::find_by_name</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">explicit_GPR_identifier</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_distinguisher_iname</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">RTKindConstructors::get_distinguisher_iname</span></span>:<br/>General Parsing Routines - <a href="7-gpr.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_distinguisher_iname</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">RTKindConstructors::get_distinguisher_iname</span></span>:<br/>Parse Name Properties - <a href="6-pnp.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Behaviour::get_distinguisher</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">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Produce::find_by_name</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
@ -392,7 +392,7 @@ not, it returns <span class="extract"><span class="extract-syntax">NULL</span></
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTKindConstructors::offers_I6_GPR</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">RTKindConstructors::offers_I6_GPR</span></span>:<br/><a href="5-kc.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">&#167;10</a><br/>General Parsing Routines - <a href="7-gpr.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTKindConstructors::offers_I6_GPR</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">RTKindConstructors::offers_I6_GPR</span></span>:<br/><a href="5-kc.html#SP7">&#167;7</a><br/>Parse Name Properties - <a href="6-pnp.html#SP10">&#167;10</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">&#167;10</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">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">KindConstructors::offers_I6_GPR</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -432,7 +432,7 @@ parsing names of objects, but not as a grammar token in its own right.
<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">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">recognition_routine</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_recognition_only_GPR_as_iname</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">RTKindConstructors::get_recognition_only_GPR_as_iname</span></span>:<br/>General Parsing Routines - <a href="7-gpr.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindConstructors::get_recognition_only_GPR_as_iname</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">RTKindConstructors::get_recognition_only_GPR_as_iname</span></span>:<br/>Parse Name Properties - <a href="6-pnp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><a href="5-kc.html#SP9" class="function-link"><span class="function-syntax">RTKindConstructors::get_recognition_only_GPR</span></a><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">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Produce::find_by_name</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>

View file

@ -402,10 +402,10 @@ sets the <span class="extract"><span class="extract-syntax">parsed_number</span>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-lp.html#SP2" class="function-link"><span class="function-syntax">RTLiteralPatterns::parse_fn_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">lp</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">Functions::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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_lp_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_standard_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_LP_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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">succeeded_label</span><span class="plain-syntax"> = </span><a href="2-ec.html#SP15" class="function-link"><span class="function-syntax">EmitCode::reserve_label</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">".Succeeded"</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">failed_label</span><span class="plain-syntax"> = </span><a href="2-ec.html#SP15" class="function-link"><span class="function-syntax">EmitCode::reserve_label</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">".Failed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-lp.html#SP4_2_1" class="named-paragraph-link"><span class="named-paragraph">Match the literal pattern</span><span class="named-paragraph-number">4.2.1</span></a></span><span class="plain-syntax">;</span>

View file

@ -121,7 +121,7 @@ package already supplied:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">prop_package</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTProperties::iname</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">RTProperties::iname</span></span>:<br/><a href="5-prp.html#SP5">&#167;5</a>, <a href="5-prp.html#SP6">&#167;6</a>, <a href="5-prp.html#SP6_5">&#167;6.5</a>, <a href="5-prp.html#SP9">&#167;9</a>, <a href="5-prp.html#SP10_1">&#167;10.1</a>, <a href="5-prp.html#SP10_2">&#167;10.2</a><br/>Emit - <a href="2-emt.html#SP17">&#167;17</a>, <a href="2-emt.html#SP18">&#167;18</a><br/>Showme Command - <a href="2-sc.html#SP6_1">&#167;6.1</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">&#167;6.1.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a><br/>Scene Instances - <a href="5-si.html#SP6_1">&#167;6.1</a><br/>Relations - <a href="5-rlt.html#SP6_3_3">&#167;6.3.3</a><br/>Emit Property Values - <a href="7-epv.html#SP6">&#167;6</a><br/>Instance Counting - <a href="7-ic.html#SP12">&#167;12</a><br/>Parsing - <a href="7-prs.html#SP2">&#167;2</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">&#167;10</a><br/>General Parsing Routines - <a href="7-gpr.html#SP11">&#167;11</a>, <a href="7-gpr.html#SP13">&#167;13</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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTProperties::iname</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">RTProperties::iname</span></span>:<br/><a href="5-prp.html#SP5">&#167;5</a>, <a href="5-prp.html#SP6">&#167;6</a>, <a href="5-prp.html#SP6_5">&#167;6.5</a>, <a href="5-prp.html#SP9">&#167;9</a>, <a href="5-prp.html#SP10_1">&#167;10.1</a>, <a href="5-prp.html#SP10_2">&#167;10.2</a><br/>Emit - <a href="2-emt.html#SP17">&#167;17</a>, <a href="2-emt.html#SP18">&#167;18</a><br/>Showme Command - <a href="2-sc.html#SP6_1">&#167;6.1</a>, <a href="2-sc.html#SP6_1_1">&#167;6.1.1</a>, <a href="2-sc.html#SP6_1_1_1">&#167;6.1.1.1</a>, <a href="2-sc.html#SP6_2">&#167;6.2</a><br/>Scene Instances - <a href="5-si.html#SP6_1">&#167;6.1</a><br/>Relations - <a href="5-rlt.html#SP6_3_3">&#167;6.3.3</a><br/>Parse Name Properties - <a href="6-pnp.html#SP4_3_1">&#167;4.3.1</a>, <a href="6-pnp.html#SP6_2">&#167;6.2</a>, <a href="6-pnp.html#SP8">&#167;8</a>, <a href="6-pnp.html#SP10">&#167;10</a><br/>Emit Property Values - <a href="7-epv.html#SP6">&#167;6</a><br/>Instance Counting - <a href="7-ic.html#SP12">&#167;12</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">&#167;10</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find iname for null property"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Properties::is_either_or</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">store_in_negation</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-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EitherOrProperties::get_negation</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
@ -183,7 +183,7 @@ kit, we'll have to use that one.
</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">RTProperties::stored_in_negation</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">RTProperties::stored_in_negation</span></span>:<br/><a href="5-prp.html#SP10_1">&#167;10.1</a>, <a href="5-prp.html#SP10_2">&#167;10.2</a><br/>Showme Command - <a href="2-sc.html#SP6_2">&#167;6.2</a><br/>Emit Property Values - <a href="7-epv.html#SP3">&#167;3</a>, <a href="7-epv.html#SP3_1">&#167;3.1</a>, <a href="7-epv.html#SP5">&#167;5</a>, <a href="7-epv.html#SP6">&#167;6</a><br/>General Parsing Routines - <a href="7-gpr.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTProperties::stored_in_negation</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">RTProperties::stored_in_negation</span></span>:<br/><a href="5-prp.html#SP10_1">&#167;10.1</a>, <a href="5-prp.html#SP10_2">&#167;10.2</a><br/>Showme Command - <a href="2-sc.html#SP6_2">&#167;6.2</a><br/>Parse Name Properties - <a href="6-pnp.html#SP7">&#167;7</a><br/>Emit Property Values - <a href="7-epv.html#SP3">&#167;3</a>, <a href="7-epv.html#SP3_1">&#167;3.1</a>, <a href="7-epv.html#SP5">&#167;5</a>, <a href="7-epv.html#SP6">&#167;6</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">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">either_or_data</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">"non-EO property"</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">prn</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">store_in_negation</span><span class="plain-syntax">;</span>

View file

@ -311,7 +311,7 @@ used to define new kinds; in this case it doesn't matter what we write, but
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bits</span><span class="plain-syntax"> &amp; </span><span class="constant-syntax">TB_COLUMN_TOPIC</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cell</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-prs.html#SP3" class="function-link"><span class="function-syntax">RTParsing::compile_understanding</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CompileRvalues::compile_understanding</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::generic_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>

View file

@ -175,9 +175,13 @@ constant or a global variable in Inter:
</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">RTVariables::store_in_this_iname</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">RTVariables::store_in_this_iname</span></span>:<br/><a href="5-vrb.html#SP6">&#167;6</a>, <a href="5-vrb.html#SP7">&#167;7</a><br/>Parsing - <a href="7-prs.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTVariables::store_in_this_iname</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">RTVariables::store_in_this_iname</span></span>:<br/><a href="5-vrb.html#SP6">&#167;6</a>, <a href="5-vrb.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</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="plain-syntax"> </span><a href="5-vrb.html#SP4" class="function-link"><span class="function-syntax">RTVariables::set_NVE</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">, </span><a href="5-vrb.html#SP3" class="function-link"><span class="function-syntax">RTVariables::nve_from_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTVariables::understood_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="5-vrb.html#SP5" class="function-link"><span class="function-syntax">RTVariables::store_in_this_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PARSED_NUMBER_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. </b>And in particular that's how we handle sentences like "Maximum score translates
into Inter as "MAX_SCORE".":

View file

@ -213,7 +213,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-ts.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresscurrent">bd</li><li class="progresssection"><a href="6-tp.html">tp</a></li><li class="progresssection"><a href="6-tm.html">tm</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="6-tp.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="5-ts.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresscurrent">bd</li><li class="progresssection"><a href="6-tp.html">tp</a></li><li class="progresssection"><a href="6-tm.html">tm</a></li><li class="progresssection"><a href="6-np.html">np</a></li><li class="progresssection"><a href="6-pnp.html">pnp</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="6-tp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Parsing</title>
<title>Name Properties</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">
@ -20,6 +20,11 @@ function togglePopup(material_id) {
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script src="http://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="../docs-assets/Bigfoot.js"></script>
<link href="../docs-assets/Bigfoot.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
@ -67,41 +72,85 @@ function togglePopup(material_id) {
</ul>
</nav>
<main role="main">
<!--Weave of 'Parsing' generated by Inweb-->
<!--Weave of 'Name Properties' 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#7">Chapter 7: Still Unsorted</a></li><li><b>Parsing</b></li></ul></div>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b></p>
<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#6">Chapter 6: Completion Resources</a></li><li><b>Name Properties</b></li></ul></div>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>In the runtime command parser, the names of objects are parsed as nouns using
the values of two properties: <span class="extract"><span class="extract-syntax">name</span></span>, a simple array of dictionary words, and
<span class="extract"><span class="extract-syntax">parse_name</span></span>, a GPR function. These properties can be assigned either to single
instances of kinds of object, or to the kinds themselves, so we store their
inames in data attached to an inference subject.
</p>
<p class="commentary">For a subject which is neither an object nor a kind of object, these names are
forever null.
</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">RTParsing::understood_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="5-vrb.html#SP5" class="function-link"><span class="function-syntax">RTVariables::store_in_this_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">var</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PARSED_NUMBER_HL</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">parsing_compilation_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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">parsing_package</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">name_array_iname</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">parse_name_fn_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">parsing_compilation_data</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure parsing_compilation_data is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>I will be / PCD:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">parsing_compilation_data</span><span class="plain-syntax"> </span><span class="function-syntax">Name::new_compilation_data</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">parsing_compilation_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">pcd</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pcd</span><span class="plain-syntax">.</span><span class="element-syntax">parsing_package</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">pcd</span><span class="plain-syntax">.</span><span class="element-syntax">name_array_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">pcd</span><span class="plain-syntax">.</span><span class="element-syntax">parse_name_fn_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">pcd</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>The name property requires special care, partly over I6 eccentricities
such as the way that single-letter dictionary words can be misinterpreted
as characters (hence the double slash below), but also because something
called "your ..." in the source text &mdash; "your nose", say &mdash; needs to
be altered to "my ..." for purposes of parsing during play.
</p>
<p class="commentary">Note that <span class="extract"><span class="extract-syntax">name</span></span> is additive in I6 terms, meaning that its values
accumulate from class down to instance: but we prevent this, by only
compiling <span class="extract"><span class="extract-syntax">name</span></span> properties for instance objects directly. The practical
consequence is that we have to imitate this inheritance when it comes
to single-word grammar for things. Recall that a sentence like "Understand
"cube" as the block" formally creates a grammar line which ought to
be parsed as part of some elaborate <span class="extract"><span class="extract-syntax">parse_name</span></span> property: but that for
efficiency's sake, we notice that "cube" is only one word and so put
it into the <span class="extract"><span class="extract-syntax">name</span></span> property instead. And we need to perform the same trick
for the kinds we inherit from.
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>A single package holds the <span class="extract"><span class="extract-syntax">name</span></span> and/or <span class="extract"><span class="extract-syntax">parse_name</span></span> of a single subject.
</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">RTParsing::name_property_array</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PW</span><span class="plain-syntax">,</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Name::package</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">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">)-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">parsing_package</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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">parsing_package</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP20" class="function-link"><span class="function-syntax">Hierarchy::completion_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">OBJECT_NOUNS_HAP</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">)-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">parsing_package</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Name::get_name_array_iname</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">Name::get_name_array_iname</span></span>:<br/><a href="6-np.html#SP4">&#167;4</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">)-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">name_array_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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">name_array_iname</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">NAME_ARRAY_HL</span><span class="plain-syntax">, </span><a href="6-np.html#SP3" class="function-link"><span class="function-syntax">Name::package</span></a><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">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">)-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">name_array_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Name::get_parse_name_fn_iname</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">Name::get_parse_name_fn_iname</span></span>:<br/>Parse Name Properties - <a href="6-pnp.html#SP1">&#167;1</a>, <a href="6-pnp.html#SP2">&#167;2</a>, <a href="6-pnp.html#SP3">&#167;3</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">)-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">parse_name_fn_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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">parse_name_fn_iname</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PARSE_NAME_FN_HL</span><span class="plain-syntax">, </span><a href="6-np.html#SP3" class="function-link"><span class="function-syntax">Name::package</span></a><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">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">)-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">parse_name_fn_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>Note that a <span class="extract"><span class="extract-syntax">name</span></span> is never given to a kind: only to an instance. This is
unlike customary practice when writing Inform 6 code, and is one of the few
ways in which I7-generated code does not mimic I6 practice in command parsing.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>
</p>
<p class="commentary">We take special care to ensure that something called "your ..." in the source text
&mdash; "your nose", say &mdash; is altered to "my ..." for purposes of parsing during play.
</p>
<p class="commentary">The test case <span class="extract"><span class="extract-syntax">PM_PluralsFromKind</span></span> may be helpful here.
</p>
<ul class="footnotetexts"><li class="footnote" id="fn:1"><p class="inwebfootnote"><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> This is because we do not want to imitate the unusual feature of I6 which
makes <span class="extract"><span class="extract-syntax">name</span></span> an "additive" property, i.e., in which arrays accumulate as objects
inherit from classes. The concept of additive properties does not exist in Inter.
<a href="#fnref:1" title="return to text"> &#x21A9;</a></p></li></ul>
<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">Name::name_property_array</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PW</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">from_kind</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>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP21" class="function-link"><span class="function-syntax">Hierarchy::package_within</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INLINE_PROPERTIES_HAP</span><span class="plain-syntax">, </span><a href="5-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name_array</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INLINE_PROPERTY_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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name_array</span><span class="plain-syntax"> = </span><a href="6-np.html#SP3" class="function-link"><span class="function-syntax">Name::get_name_array_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_subject</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="2-ea.html#SP2" class="function-link"><span class="function-syntax">EmitArrays::begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name_array</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_WORDING</span><span class="plain-syntax">(</span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
@ -115,7 +164,7 @@ for the kinds we inherit from.
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::dword_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">content</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">content</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">from_kind</span><span class="plain-syntax">) </span><span class="comment-syntax"> see test case PM_PluralsFromKind</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">from_kind</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_WORDING</span><span class="plain-syntax">(</span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">PW</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">additional</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">LOOP_THROUGH_WORDING</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">)</span>
@ -129,17 +178,17 @@ for the kinds we inherit from.
<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">PARSING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_object</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PARSING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandGrammars::take_out_one_word_grammar</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PARSING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_object</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PARSING_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="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">infs</span><span 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">infs</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_object</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandGrammars::take_out_one_word_grammar</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_object</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
@ -147,45 +196,9 @@ for the kinds we inherit from.
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">name_array</span><span class="plain-syntax">, </span><span class="identifier-syntax">INLINE_ARRAY_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">name_array</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTParsing::name_iname</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">RTParsing::name_iname</span></span>:<br/>General Parsing Routines - <a href="7-gpr.html#SP6">&#167;6</a>, <a href="7-gpr.html#SP8">&#167;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">return</span><span class="plain-syntax"> </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ParsingPlugin::name_property</span><span class="plain-syntax">());</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>We cache grammar occurring in the source text in conditions, and so forth:
</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">cached_understanding</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">understanding_text</span><span class="plain-syntax">; </span><span class="comment-syntax"> word range of the understanding text</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">cu_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> the runtime name for this </span><span class="extract"><span class="extract-syntax">Consult_Grammar_N</span></span><span class="comment-syntax"> routine</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">cached_understanding</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTParsing::compile_understanding</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">RTParsing::compile_understanding</span></span>:<br/>Tables - <a href="5-tbl.html#SP2_1_1_1_4">&#167;2.1.1.1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val2</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="function-syntax">&lt;subject-pronoun&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) { *</span><span class="identifier-syntax">val1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">; *</span><span class="identifier-syntax">val2</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">cached_understanding</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cu</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">cu</span><span class="plain-syntax">, </span><span class="reserved-syntax">cached_understanding</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">cu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">understanding_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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::to_value_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">val2</span><span class="plain-syntax">, </span><span class="identifier-syntax">cu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">cu_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="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="identifier-syntax">Understand::consultation</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="7-gpr.html#SP3" class="function-link"><span class="function-syntax">UnderstandGeneralTokens::consult_iname</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cu</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">cached_understanding</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">understanding_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cu</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">cu_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">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::to_value_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">val2</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</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="7-gng.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresscurrent">prs</li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progresssection"><a href="7-gpr.html">gpr</a></li><li class="progressnext"><a href="7-cg.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="6-tm.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-bd.html">bd</a></li><li class="progresssection"><a href="6-tp.html">tp</a></li><li class="progresssection"><a href="6-tm.html">tm</a></li><li class="progresscurrent">np</li><li class="progresssection"><a href="6-pnp.html">pnp</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="6-pnp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -136,7 +136,7 @@ given direction D, which appears here in the guise of its instance <span class="
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="6-tp.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-bd.html">bd</a></li><li class="progresssection"><a href="6-tp.html">tp</a></li><li class="progresscurrent">tm</li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="7-epv.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="6-tp.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-bd.html">bd</a></li><li class="progresssection"><a href="6-tp.html">tp</a></li><li class="progresscurrent">tm</li><li class="progresssection"><a href="6-np.html">np</a></li><li class="progresssection"><a href="6-pnp.html">pnp</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="6-np.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -124,7 +124,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="6-bd.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-bd.html">bd</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="6-tm.html">tm</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="6-tm.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="6-bd.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-bd.html">bd</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="6-tm.html">tm</a></li><li class="progresssection"><a href="6-np.html">np</a></li><li class="progresssection"><a href="6-pnp.html">pnp</a></li><li class="progresschapter"><a href="7-epv.html">7</a></li><li class="progressnext"><a href="6-tm.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -871,7 +871,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="7-ic.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresscurrent">ap</li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-prs.html">prs</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progresssection"><a href="7-gpr.html">gpr</a></li><li class="progressnext"><a href="7-gng.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="7-ic.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresscurrent">ap</li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progressnext"><a href="7-gng.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -122,7 +122,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">no_verb_verb_exists</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure cg_compilation_data is accessed in 7/gpr and here.</li></ul>
<ul class="endnotetexts"><li>The structure cg_compilation_data is accessed in 6/pnp and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Phases III and IV: Sort and Compile Grammar. </b>At this highest level phases III and IV are intermingled, in that Phase III
always precedes Phase IV for any given list of grammar lines, but each CG
goes through both Phase III and IV before the next begins Phase III. So it
@ -285,22 +285,22 @@ specified for all things. (This mimics I6 class-to-instance inheritance.)
</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">RTCommandGrammars::cg_compile_parse_name_lines</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::cg_compile_parse_name_lines</span></span>:<br/><a href="7-cg.html#SP7">&#167;7</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">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">RTCommandGrammars::cg_compile_parse_name_lines</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::cg_compile_parse_name_lines</span></span>:<br/>Parse Name Properties - <a href="6-pnp.html#SP3">&#167;3</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">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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">subj_understood</span><span 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">)-&gt;</span><span class="identifier-syntax">understand_as_this_object</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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_subject</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"link between subject and CG broken"</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">"Parse_name content for $j:\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_object</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_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">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="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">infs</span><span 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">infs</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_object</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_subject</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">"And parse_name content inherited from $j:\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_object</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-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">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)-&gt;</span><span class="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
@ -341,7 +341,7 @@ next priority, and so on up the hierarchy.
<span class="plain-syntax"> </span><a href="7-cgl.html#SP4" 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">-&gt;</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#SP20" 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>
<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#SP20" class="function-link"><span class="function-syntax">Hierarchy::completion_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COMMANDS_HAP</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">array_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DECLARATION_ARRAY_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="7-cg.html#SP4" class="function-link"><span class="function-syntax">RTCommandGrammars::cg_compile_Verb_directive_header</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">array_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-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">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
@ -349,11 +349,11 @@ next priority, and so on up the hierarchy.
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_TOKEN:</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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</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">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_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">"cg token not ready"</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">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_token_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_standard_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP11" class="function-link"><span class="function-syntax">EmitCode::ref_symbol</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="element-syntax">original_wn_s</span><span class="plain-syntax">);</span>
@ -373,12 +373,12 @@ next priority, and so on up the hierarchy.
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_CONSULT:</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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="7-gpr.html#SP3" class="function-link"><span class="function-syntax">UnderstandGeneralTokens::consult_iname</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="reserved-syntax">gpr_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax"> = </span><a href="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP8" class="function-link"><span class="function-syntax">RTCommandGrammars::consult_iname</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">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_range_calls</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_range_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_standard_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP11" class="function-link"><span class="function-syntax">EmitCode::ref_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">WN_HL</span><span class="plain-syntax">));</span>
@ -402,25 +402,17 @@ next priority, and so on up the hierarchy.
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_SUBJECT:</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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><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="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::new_packaging_state</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="7-gpr.html#SP5" class="function-link"><span class="function-syntax">UnderstandGeneralTokens::compile_parse_name_head</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">save</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">subj_understood</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><a href="7-cg.html#SP5" class="function-link"><span class="function-syntax">RTCommandGrammars::cg_compile_parse_name_lines</span></a><span class="plain-syntax">(&amp;</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><a href="7-gpr.html#SP8" class="function-link"><span class="function-syntax">UnderstandGeneralTokens::compile_parse_name_tail</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_SUBJECT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">"iv"</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="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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</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">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_prn_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">"PRN PN not ready"</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">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_prn_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_standard_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP11" class="function-link"><span class="function-syntax">EmitCode::ref_symbol</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="element-syntax">original_wn_s</span><span class="plain-syntax">);</span>
@ -456,8 +448,29 @@ next priority, and so on up the hierarchy.
<span class="plain-syntax"> </span><span class="identifier-syntax">CompileValues::to_code_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">gty</span><span class="plain-syntax">-&gt;</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>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. </b>These are used to parse an explicit range of words (such as traditionally
found in the CONSULT command) at run time, and they are not I6 grammar
tokens, and do not appear in <span class="extract"><span class="extract-syntax">Verb</span></span> declarations: otherwise, such
routines are very similar to GPRs.
</p>
<p class="commentary">First, we need to look after a pointer to the CG used to hold the grammar
being matched against the snippet of words.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTCommandGrammars::consult_iname</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">RTCommandGrammars::consult_iname</span></span>:<br/><a href="7-cg.html#SP7">&#167;7</a></span></button><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="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">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_consult_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">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_cg_created</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#SP19" class="function-link"><span class="function-syntax">Hierarchy::local_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CONSULT_TOKENS_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_consult_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CONSULT_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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_consult_iname</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="7-prs.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-prs.html">prs</a></li><li class="progresscurrent">cg</li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progresssection"><a href="7-gpr.html">gpr</a></li><li class="progressnext"><a href="7-cgl.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="7-gng.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresscurrent">cg</li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progressnext"><a href="7-cgl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -509,7 +509,7 @@ command CGs) have not yet been type-checked, whereas all others have.
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</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><a href="7-gpr.html#SP7" class="function-link"><span class="function-syntax">UnderstandGeneralTokens::after_gl_failed</span></a><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">-&gt;</span><span class="identifier-syntax">pluralised</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="6-pnp.html#SP5" class="function-link"><span class="function-syntax">ParseName::compile_reset_code_after_failed_line</span></a><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">-&gt;</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><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
@ -710,9 +710,9 @@ command CGs) have not yet been type-checked, whereas all others have.
<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><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sgpr_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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_standard_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-cgl.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammarLines::compile_token_line</span></a><span class="plain-syntax">(&amp;</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">-&gt;</span><span class="element-syntax">first_choice</span><span class="plain-syntax">, </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-&gt;</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="element-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><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RETURN_BIP</span><span class="plain-syntax">);</span>
@ -1635,7 +1635,7 @@ nothing else.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-cgl.html#SP10">&#167;10</a> (four times), <a href="7-cgl.html#SP10_1">&#167;10.1</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="7-cg.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-prs.html">prs</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresscurrent">cgl</li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progresssection"><a href="7-gpr.html">gpr</a></li><li class="progressnext"><a href="7-nft.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="7-cg.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresscurrent">cgl</li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progressnext"><a href="7-nft.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -325,7 +325,7 @@ the following.
</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">RTPropertyValues::emit_iname_has_property</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">RTPropertyValues::emit_iname_has_property</span></span>:<br/>General Parsing Routines - <a href="7-gpr.html#SP11">&#167;11</a>, <a href="7-gpr.html#SP13">&#167;13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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">RTPropertyValues::emit_iname_has_property</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">RTPropertyValues::emit_iname_has_property</span></span>:<br/>Parse Name Properties - <a href="6-pnp.html#SP8">&#167;8</a>, <a href="6-pnp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</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><a href="7-epv.html#SP6" class="function-link"><span class="function-syntax">RTPropertyValues::emit_has_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTPropertyValues::emit_has_property</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">RTPropertyValues::emit_has_property</span></span>:<br/>Showme Command - <a href="2-sc.html#SP6_2">&#167;6.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</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>
@ -529,7 +529,7 @@ and it seems best to reject the extra complexity needed.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="6-tm.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresscurrent">epv</li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-prs.html">prs</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progresssection"><a href="7-gpr.html">gpr</a></li><li class="progressnext"><a href="7-ic.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="6-pnp.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresscurrent">epv</li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progressnext"><a href="7-ic.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -135,7 +135,7 @@
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="7-ap.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresscurrent">gng</li><li class="progresssection"><a href="7-prs.html">prs</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progresssection"><a href="7-gpr.html">gpr</a></li><li class="progressnext"><a href="7-prs.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="7-ap.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresscurrent">gng</li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progressnext"><a href="7-cg.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -502,7 +502,7 @@ constants, and use the Link constants to progress; we stop at <span class="extra
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="7-epv.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresscurrent">ic</li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-prs.html">prs</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progresssection"><a href="7-gpr.html">gpr</a></li><li class="progressnext"><a href="7-ap.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="7-epv.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresscurrent">ic</li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progressnext"><a href="7-ap.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -352,7 +352,7 @@ that's why.)
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="7-cgl.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-prs.html">prs</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresscurrent">nft</li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progresssection"><a href="7-gpr.html">gpr</a></li><li class="progressnext"><a href="7-tpv.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="7-cgl.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresscurrent">nft</li><li class="progresssection"><a href="7-tpv.html">tpv</a></li><li class="progressnext"><a href="7-tpv.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -75,124 +75,13 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;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">gpr_kit</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">cur_addr_s</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">cur_len_s</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">cur_word_s</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">f_s</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">g_s</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">group_wn_s</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">instance_s</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">matched_number_s</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">mid_word_s</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">n_s</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">original_wn_s</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">pass_s</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">pass1_n_s</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">pass2_n_s</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">range_from_s</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">range_words_s</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">rv_s</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rv_lv</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">sgn_s</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">spn_s</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">ss_s</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">tot_s</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">try_from_wn_s</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">v_s</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">w_s</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">wpos_s</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">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/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a><br/>Command Grammars - <a href="7-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">&#167;8</a><br/>General Parsing Routines - <a href="7-gpr.html#SP4">&#167;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>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">.</span><span class="element-syntax">cur_word_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">f_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">g_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">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">gprk</span><span class="plain-syntax">.</span><span class="element-syntax">instance_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">matched_number_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">mid_word_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">n_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">original_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">gprk</span><span class="plain-syntax">.</span><span class="element-syntax">pass_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">pass1_n_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">pass2_n_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">range_from_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">range_words_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">rv_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">rv_lv</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">sgn_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">spn_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">ss_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">tot_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">try_from_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">gprk</span><span class="plain-syntax">.</span><span class="element-syntax">v_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">w_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">wpos_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">x_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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">gprk</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_instance_call</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">-&gt;</span><span class="identifier-syntax">instance_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_other_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"instance"</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_range_calls</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_range_calls</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP7">&#167;7</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">-&gt;</span><span class="identifier-syntax">range_from_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"range_from"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"call parameter: word number of snippet start"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">range_words_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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="identifier-syntax">I</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('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">UnderstandValueTokens::add_original</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a><br/>Command Grammars - <a href="7-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">&#167;8</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">-&gt;</span><span class="identifier-syntax">original_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</a><br/>Command Grammars - <a href="7-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">&#167;8</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">-&gt;</span><span class="identifier-syntax">group_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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">-&gt;</span><span class="identifier-syntax">v_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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">-&gt;</span><span class="identifier-syntax">w_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">rv_lv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"rv"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">rv_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rv_lv</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_lp_vars</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::add_lp_vars</span></span>:<br/>Literal Patterns - <a href="5-lp.html#SP4_2">&#167;4.2</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">-&gt;</span><span class="identifier-syntax">wpos_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"wpos"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">mid_word_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"mid_word"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">matched_number_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"matched_number"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">cur_word_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"cur_word"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">cur_len_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"cur_len"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">cur_addr_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"cur_addr"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sgn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"sgn"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">tot_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"tot"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">f_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"f"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">x_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_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('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">UnderstandValueTokens::add_parse_name_vars</span></span>:<br/>General Parsing Routines - <a href="7-gpr.html#SP5">&#167;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">-&gt;</span><span class="identifier-syntax">original_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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="identifier-syntax">I</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">-&gt;</span><span class="identifier-syntax">group_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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="identifier-syntax">I</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">-&gt;</span><span class="identifier-syntax">try_from_wn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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="identifier-syntax">I</span><span class="string-syntax">"position to try matching from"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">n_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"number of words matched"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">f_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"flag: sufficiently good match found to justify success"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">w_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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><span class="identifier-syntax">I</span><span class="string-syntax">"for use by individual grammar lines"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">rv_lv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"rv"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">rv_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::declare</span><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rv_lv</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">g_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"g"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"temporary: success flag for parsing visibles"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">ss_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"ss"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"temporary: saves 'self' in distinguishing visibles"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">spn_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"spn"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"temporary: saves 'parsed_number' in parsing visibles"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">pass_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"pass"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"pass counter (1 to 3)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">pass1_n_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"pass1_n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"value of n recorded during pass 1"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">pass2_n_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_internal_commented_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="identifier-syntax">I</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><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-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">Functions::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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="identifier-syntax">CommandGrammars::get_parsing_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_iv</span></a><span class="plain-syntax">(&amp;</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><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RETURN_BIP</span><span class="plain-syntax">);</span>
@ -206,8 +95,8 @@ function togglePopup(material_id) {
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::time</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-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">Functions::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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TimesOfDay::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">K</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="identifier-syntax">CommandGrammars::get_parsing_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
@ -224,8 +113,8 @@ function togglePopup(material_id) {
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::truth_state</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-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">Functions::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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="identifier-syntax">CommandGrammars::get_parsing_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_truth_state</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_iv</span></a><span class="plain-syntax">(&amp;</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><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RETURN_BIP</span><span class="plain-syntax">);</span>
@ -236,7 +125,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::agent</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::agent</span></span>:<br/>Kind Constructors - <a href="5-kc.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">compilation_subtask</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UnderstandValueTokens::agent</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::agent</span></span>:<br/>Kind Constructors - <a href="5-kc.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">compilation_subtask</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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::Behaviour::is_an_enumeration</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_quasinumerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">))) {</span>
@ -250,20 +139,20 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">need_lf_vars</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">need_lf_vars</span><span class="plain-syntax">) </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_lp_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_standard_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">need_lf_vars</span><span class="plain-syntax">) </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_LP_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tpv.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Compile body of kind GPR</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span 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_an_enumeration</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-kc.html#SP3" class="function-link"><span class="function-syntax">RTKindConstructors::get_instance_GPR_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_instance_call</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_instance_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_standard_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tpv.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Compile body of kind GPR</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GV_IS_VALUE_instance_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -288,20 +177,20 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">need_lf_vars</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">need_lf_vars</span><span class="plain-syntax">) </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_lp_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_standard_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">need_lf_vars</span><span class="plain-syntax">) </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_LP_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tpv.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Compile body of kind GPR</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span 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_an_enumeration</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-kc.html#SP3" class="function-link"><span class="function-syntax">RTKindConstructors::get_instance_GPR_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::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="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_instance_call</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_original</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="7-tpv.html#SP1" class="function-link"><span class="function-syntax">UnderstandValueTokens::add_standard_set</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</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="2-gpr.html#SP3" class="function-link"><span class="function-syntax">GPRs::new_kit</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_instance_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_standard_vars</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tpv.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Compile body of kind GPR</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">GV_IS_VALUE_instance_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -311,7 +200,6 @@ 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/lp, 7/cg, 7/cgl, 7/gpr and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>&#167;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>
@ -441,7 +329,7 @@ function togglePopup(material_id) {
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="7-tpv.html#SP1_1">&#167;1.1</a> (three times).</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="7-nft.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-prs.html">prs</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresscurrent">tpv</li><li class="progresssection"><a href="7-gpr.html">gpr</a></li><li class="progressnext"><a href="7-gpr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="7-nft.html">&#10094;</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-gm.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-act.html">5</a></li><li class="progresschapter"><a href="6-bd.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-epv.html">epv</a></li><li class="progresssection"><a href="7-ic.html">ic</a></li><li class="progresssection"><a href="7-ap.html">ap</a></li><li class="progresssection"><a href="7-gng.html">gng</a></li><li class="progresssection"><a href="7-cg.html">cg</a></li><li class="progresssection"><a href="7-cgl.html">cgl</a></li><li class="progresssection"><a href="7-nft.html">nft</a></li><li class="progresscurrent">tpv</li><li class="progressnextoff">&#10095;</li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -163,6 +163,11 @@
<spon class="sectiontitle">Short Names</span></a> -
<span class="sectionpurpose">To compile the "short name" and "capitalised short name" properties.</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-gpr.html">
<spon class="sectiontitle">General Parsing Routines</span></a> -
<span class="sectionpurpose">To compile "general parsing routines", or GPRs, which are runtime functions used to match noun phrases in the command parser.</span></p>
</li>
</ul>
</li>
<li>
@ -387,6 +392,16 @@
<spon class="sectiontitle">The Map</span></a> -
<span class="sectionpurpose">The runtime representation of the spatial map for works of interactive fiction: that is, how the rooms and doors connect up.</span></p>
</li>
<li>
<p class="sectionentry"><a href="6-np.html">
<spon class="sectiontitle">Name Properties</span></a> -
<span class="sectionpurpose"></span></p>
</li>
<li>
<p class="sectionentry"><a href="6-pnp.html">
<spon class="sectiontitle">Parse Name Properties</span></a> -
<span class="sectionpurpose">Functions which are values of the parse_name property for objects.</span></p>
</li>
</ul>
</li>
<li>
@ -413,11 +428,6 @@
<spon class="sectiontitle">Going</span></a> -
<span class="sectionpurpose">Tweaks to compiling APs for the going action.</span></p>
</li>
<li>
<p class="sectionentry"><a href="7-prs.html">
<spon class="sectiontitle">Parsing</span></a> -
<span class="sectionpurpose"></span></p>
</li>
<li>
<p class="sectionentry"><a href="7-cg.html">
<spon class="sectiontitle">Command Grammars</span></a> -
@ -438,11 +448,6 @@
<spon class="sectiontitle">Tokens Parsing Values</span></a> -
<span class="sectionpurpose">In the argot of Inform 6, GPR stands for General Parsing Routine, and I7 makes heavy use of GPR tokens to achieve its ends. This section is where the necessary I6 routines are compiled.</span></p>
</li>
<li>
<p class="sectionentry"><a href="7-gpr.html">
<spon class="sectiontitle">General Parsing Routines</span></a> -
<span class="sectionpurpose">To compile I6 general parsing routines (GPRs) and/or |parse_name| properties as required by the I7 grammar.</span></p>
</li>
</ul>
</li>
</ul>

View file

@ -1,13 +1,13 @@
Total memory consumption was 300514K = 293 MB
Total memory consumption was 302324K = 295 MB
63.6% was used for 1482362 objects, in 318728 frames in 239 x 800K = 191200K = 186 MB:
63.7% was used for 1493449 objects, in 319536 frames in 241 x 800K = 192800K = 188 MB:
9.3% inter_tree_node_array 40 x 8192 = 327680 objects, 28837120 bytes
6.0% text_stream_array 3327 x 100 = 332700 objects, 18737664 bytes
5.3% linked_list 29321 objects, 16419760 bytes
9.5% inter_tree_node_array 41 x 8192 = 335872 objects, 29558048 bytes
6.0% text_stream_array 3337 x 100 = 333700 objects, 18793984 bytes
5.3% linked_list 29309 objects, 16413040 bytes
3.3% parse_node 129367 objects, 10349360 bytes
2.7% inter_symbol_array 87 x 1024 = 89088 objects, 8555232 bytes
2.4% verb_conjugation 160 objects, 7425280 bytes
2.3% verb_conjugation 160 objects, 7425280 bytes
1.7% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes
1.0% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
1.0% map_data 670 objects, 3178480 bytes
@ -17,29 +17,29 @@ Total memory consumption was 300514K = 293 MB
0.4% inter_name_array 31 x 1000 = 31000 objects, 1488992 bytes
0.4% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes
0.4% i6_schema_array 21 x 100 = 2100 objects, 1260672 bytes
0.3% inter_package 15064 objects, 1084608 bytes
0.3% inter_package 15262 objects, 1098864 bytes
0.3% id_body 940 objects, 1075360 bytes
0.3% inter_name_generator_array 25 x 1000 = 25000 objects, 1000800 bytes
0.3% inter_name_generator_array 26 x 1000 = 26000 objects, 1040832 bytes
0.3% adjective_meaning 202 objects, 1000304 bytes
0.3% inter_symbols_table 15262 objects, 976768 bytes
0.3% excerpt_meaning 3098 objects, 966576 bytes
0.3% inter_symbols_table 15064 objects, 964096 bytes
0.3% dictionary 19927 objects, 956496 bytes
0.3% dictionary 20125 objects, 966000 bytes
0.2% production 3871 objects, 898072 bytes
0.2% dict_entry_array 272 x 100 = 27200 objects, 879104 bytes
0.2% dict_entry_array 273 x 100 = 27300 objects, 882336 bytes
0.2% ptoken 8379 objects, 871416 bytes
0.2% grammatical_usage 3610 objects, 866400 bytes
0.2% package_request 9836 objects, 865568 bytes
0.2% individual_form 2560 objects, 860160 bytes
0.2% package_request 9638 objects, 848144 bytes
0.2% inter_schema_node 8663 objects, 831648 bytes
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
0.1% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
0.1% verb_usage 1128 objects, 388032 bytes
0.1% scan_directory 94 objects, 388032 bytes
0.1% verb_usage 1128 objects, 388032 bytes
0.1% rule 469 objects, 363944 bytes
0.1% verb_form 386 objects, 345856 bytes
---- noun 2379 objects, 285480 bytes
---- inference_subject 665 objects, 260680 bytes
---- compilation_subtask 2590 objects, 207200 bytes
---- compilation_subtask 2606 objects, 208480 bytes
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
---- binary_predicate 321 objects, 169488 bytes
---- linguistic_stock_item 3315 objects, 159120 bytes
@ -54,7 +54,7 @@ Total memory consumption was 300514K = 293 MB
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
---- noun_usage 2401 objects, 96040 bytes
---- preposition 273 objects, 87360 bytes
---- inter_tree 6 objects, 84480 bytes
---- inter_tree 6 objects, 84528 bytes
---- lexical_cluster 2516 objects, 80512 bytes
---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes
---- kind_variable_declaration 1652 objects, 79296 bytes
@ -64,8 +64,8 @@ Total memory consumption was 300514K = 293 MB
---- spatial_data 670 objects, 64320 bytes
---- kind_macro_definition 9 objects, 62280 bytes
---- booking 860 objects, 61920 bytes
---- scenes_rcd_data 1880 objects, 60160 bytes
---- actions_rcd_data 1880 objects, 60160 bytes
---- scenes_rcd_data 1880 objects, 60160 bytes
---- command_grammar 130 objects, 58240 bytes
---- table 7 objects, 56672 bytes
---- kind_constructor 77 objects, 56056 bytes
@ -81,6 +81,7 @@ Total memory consumption was 300514K = 293 MB
---- activity_list_array 1 x 1000 objects, 40032 bytes
---- to_family_data 496 objects, 39680 bytes
---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes
---- parsing_data 670 objects, 37520 bytes
---- production_list 616 objects, 34496 bytes
---- regions_data 670 objects, 32160 bytes
---- HTML_tag_array 1 x 1000 objects, 32032 bytes
@ -91,7 +92,6 @@ Total memory consumption was 300514K = 293 MB
---- action_pattern_array 7 x 100 = 700 objects, 28224 bytes
---- counting_data 670 objects, 26800 bytes
---- shared_variable_set_array 6 x 100 = 600 objects, 24192 bytes
---- parsing_data 670 objects, 21440 bytes
---- backdrops_data 670 objects, 21440 bytes
---- action_name 90 objects, 20160 bytes
---- nonlocal_variable 93 objects, 20088 bytes
@ -110,7 +110,7 @@ Total memory consumption was 300514K = 293 MB
---- booking_list 407 objects, 13024 bytes
---- adjective_iname_holder 320 objects, 12800 bytes
---- pathname 292 objects, 11680 bytes
---- stopwatch_timer 109 objects, 8720 bytes
---- stopwatch_timer 108 objects, 8640 bytes
---- filename 208 objects, 8320 bytes
---- uniqueness_count 325 objects, 7800 bytes
---- equation_node 68 objects, 7616 bytes
@ -119,7 +119,7 @@ Total memory consumption was 300514K = 293 MB
---- determiner 22 objects, 7216 bytes
---- verb 108 objects, 6048 bytes
---- text_literal_holder 144 objects, 5760 bytes
---- hierarchy_attachment_point 53 objects, 5088 bytes
---- hierarchy_attachment_point 54 objects, 5184 bytes
---- inbuild_work 78 objects, 4992 bytes
---- explicit_action_array 1 x 100 objects, 4832 bytes
---- value_property_data 84 objects, 4704 bytes
@ -135,20 +135,20 @@ Total memory consumption was 300514K = 293 MB
---- property_setting_bp_data 84 objects, 3360 bytes
---- method_set 102 objects, 3264 bytes
---- submodule_request 81 objects, 3240 bytes
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
---- instance_usage_array 1 x 200 objects, 3232 bytes
---- compatibility_specification 66 objects, 3168 bytes
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
---- definition 44 objects, 3168 bytes
---- compatibility_specification 66 objects, 3168 bytes
---- inform_extension 19 objects, 3040 bytes
---- property_of_value_storage 93 objects, 2976 bytes
---- either_or_property_data 62 objects, 2976 bytes
---- use_option 29 objects, 2552 bytes
---- parentage_inference_data 79 objects, 2528 bytes
---- part_of_inference_data 79 objects, 2528 bytes
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
---- inter_construct 30 objects, 2400 bytes
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
---- equation_symbol 30 objects, 2400 bytes
---- inter_construct 30 objects, 2400 bytes
---- semver_range 22 objects, 2288 bytes
---- scene 1 object, 2096 bytes
---- pronoun_usage 42 objects, 1680 bytes
@ -159,8 +159,8 @@ Total memory consumption was 300514K = 293 MB
---- noun_filter_token 22 objects, 1408 bytes
---- inter_annotation_form 35 objects, 1400 bytes
---- special_meaning_holder 33 objects, 1320 bytes
---- constant_phrase 20 objects, 1280 bytes
---- build_script 40 objects, 1280 bytes
---- constant_phrase 20 objects, 1280 bytes
---- table_column 16 objects, 1280 bytes
---- invocation_options_array 1 x 100 objects, 1224 bytes
---- direction_inference_data 30 objects, 1200 bytes
@ -171,8 +171,8 @@ Total memory consumption was 300514K = 293 MB
---- submodule_identity 29 objects, 928 bytes
---- pipeline_stage 19 objects, 912 bytes
---- inbuild_requirement 22 objects, 880 bytes
---- control_structure_phrase 12 objects, 864 bytes
---- code_generation 1 object, 864 bytes
---- control_structure_phrase 12 objects, 864 bytes
---- cached_understanding 21 objects, 840 bytes
---- phrase_option_array 1 x 100 objects, 824 bytes
---- target_vm 6 objects, 816 bytes
@ -180,45 +180,45 @@ Total memory consumption was 300514K = 293 MB
---- inter_data_type 14 objects, 784 bytes
---- tree_inventory_item 19 objects, 760 bytes
---- inform_language 6 objects, 672 bytes
---- relation_guard 5 objects, 640 bytes
---- inter_warehouse_room 10 objects, 640 bytes
---- I6T_intervention 8 objects, 640 bytes
---- inter_warehouse_room 10 objects, 640 bytes
---- relation_guard 5 objects, 640 bytes
---- inbuild_search_result 15 objects, 600 bytes
---- internal_test 14 objects, 560 bytes
---- rulebook_outcome 17 objects, 544 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
---- equation 4 objects, 416 bytes
---- i6_memory_setting 13 objects, 416 bytes
---- equation 4 objects, 416 bytes
---- module_package 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
---- grammatical_category 8 objects, 320 bytes
---- pronoun 8 objects, 320 bytes
---- door_dir_notice 5 objects, 320 bytes
---- build_step 4 objects, 288 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
---- tree_inventory 1 object, 240 bytes
---- verb_usage_tier 5 objects, 240 bytes
---- adjective_meaning_family 7 objects, 224 bytes
---- test_scenario 1 object, 216 bytes
---- release_instructions 1 object, 208 bytes
---- compilation_unit 5 objects, 200 bytes
---- build_skill 5 objects, 200 bytes
---- plural_dictionary_entry 4 objects, 192 bytes
---- compilation_unit 5 objects, 200 bytes
---- kit_dependency 4 objects, 192 bytes
---- plural_dictionary_entry 4 objects, 192 bytes
---- inform_project 1 object, 176 bytes
---- code_generation_target 4 objects, 160 bytes
---- inference_subject_family 5 objects, 160 bytes
---- imperative_defn_family 4 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- inference_subject_family 5 objects, 160 bytes
---- code_generation_target 4 objects, 160 bytes
---- link_instruction 4 objects, 160 bytes
---- codegen_pipeline 1 object, 128 bytes
---- element_activation 4 objects, 128 bytes
@ -228,26 +228,25 @@ Total memory consumption was 300514K = 293 MB
---- compile_task_data 1 object, 80 bytes
---- article 2 objects, 80 bytes
---- group_together_function 2 objects, 80 bytes
---- build_methodology 1 object, 56 bytes
---- figures_data 1 object, 56 bytes
---- inter_warehouse 1 object, 56 bytes
---- build_methodology 1 object, 56 bytes
---- HTML_file_state 1 object, 48 bytes
---- star_invention 1 object, 48 bytes
---- kind_template_definition 1 object, 40 bytes
---- by_function_bp_data 1 object, 40 bytes
---- parse_name_notice 1 object, 40 bytes
---- loop_over_scope 1 object, 40 bytes
---- kind_template_definition 1 object, 40 bytes
36.3% was used for memory not allocated for objects:
36.2% was used for memory not allocated for objects:
16.9% text stream storage 52287408 bytes in 344443 claims
3.6% dictionary storage 11126272 bytes in 19927 claims
---- sorting 720 bytes in 3 claims
16.9% text stream storage 52372384 bytes in 345461 claims
3.6% dictionary storage 11231232 bytes in 20125 claims
---- sorting 712 bytes in 3 claims
2.3% source text 7200000 bytes in 3 claims
3.5% source text details 10800000 bytes in 2 claims
3.4% source text details 10800000 bytes in 2 claims
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
0.8% inter symbols storage 2618624 bytes in 15946 claims
0.8% inter symbols storage 2643968 bytes in 16144 claims
5.4% inter bytecode storage 16802796 bytes in 14 claims
2.8% inter links storage 8866944 bytes in 265 claims
---- inter tree location list storage 150528 bytes in 25 claims
@ -257,5 +256,5 @@ Total memory consumption was 300514K = 293 MB
---- code generation workspace for objects 9648 bytes in 9 claims
---- emitter array storage 154432 bytes in 2037 claims
20.2% was overhead - 62338184 bytes = 60877K = 59 MB
20.3% was overhead - 63091552 bytes = 61612K = 60 MB

View file

@ -1,25 +1,24 @@
100.0% in inform7 run
56.0% in compilation to Inter
37.4% in //Sequence::undertake_queued_tasks//
5.9% in //InferenceSubjects::emit_all//
3.5% in //MajorNodes::pre_pass//
56.1% in compilation to Inter
37.8% in //Sequence::undertake_queued_tasks//
5.6% in //InferenceSubjects::emit_all//
3.4% in //MajorNodes::pre_pass//
2.9% in //MajorNodes::pass_1//
1.6% in //ImperativeDefinitions::assess_all//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //MajorNodes::pass_2//
0.4% in //RTKindConstructors::compile//
0.4% in //World::stage_V//
1.5% in //ImperativeDefinitions::assess_all//
0.5% in //MajorNodes::pass_2//
0.5% in //RTKindConstructors::compile//
0.5% in //World::stage_V//
0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //Sequence::undertake_queued_tasks//
0.1% in //RTCommandGrammars::compile_all//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
1.8% not specifically accounted for
41.8% in running Inter pipeline
10.6% in inter step 7/14: consolidate-text
10.2% in step preparation
9.0% in inter step 2/14: link
6.9% in inter step 14/14: generate inform6 -> auto.inf
0.8% in inter step 10/14: make-identifiers-unique
2.2% not specifically accounted for
41.5% in running Inter pipeline
10.8% in step preparation
10.4% in inter step 7/14: consolidate-text
8.9% in inter step 2/14: link
7.0% in inter step 14/14: generate inform6 -> auto.inf
0.6% in inter step 10/14: make-identifiers-unique
0.3% in inter step 11/14: reconcile-verbs
0.3% in inter step 13/14: eliminate-redundant-operations
0.3% in inter step 6/14: assimilate
@ -28,6 +27,6 @@
0.1% in inter step 5/14: resolve-conditional-compilation
0.1% in inter step 8/14: resolve-external-symbols
0.1% in inter step 9/14: inspect-plugs
2.3% not specifically accounted for
1.7% in supervisor
1.7% not specifically accounted for
1.8% in supervisor
0.4% not specifically accounted for

View file

@ -270,7 +270,6 @@ DECLARE_CLASS(rubric_holder)
@e noun_filter_token_CLASS
@e parentage_here_inference_data_CLASS
@e parentage_inference_data_CLASS
@e parse_name_notice_CLASS
@e parsing_data_CLASS
@e parsing_pp_data_CLASS
@e part_of_inference_data_CLASS
@ -307,7 +306,6 @@ DECLARE_CLASS(named_action_pattern_entry)
DECLARE_CLASS(noun_filter_token)
DECLARE_CLASS(parentage_here_inference_data)
DECLARE_CLASS(parentage_inference_data)
DECLARE_CLASS(parse_name_notice)
DECLARE_CLASS(parsing_data)
DECLARE_CLASS(parsing_pp_data)
DECLARE_CLASS(part_of_inference_data)

View file

@ -302,10 +302,10 @@ in any case for those.
=
command_grammar *CommandGrammars::for_subject(inference_subject *subj) {
if (PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_object != NULL)
return PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_object;
if (PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_subject != NULL)
return PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_subject;
command_grammar *cg = CommandGrammars::cg_new(CG_IS_SUBJECT);
PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_object = cg;
PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_subject = cg;
cg->subj_understood = subj;
return cg;
}

View file

@ -31,7 +31,6 @@ int ParsingPlugin::production_line(int stage, int debugging,
BENCH(Understand::traverse);
}
if (stage == INTER2_CSEQ) {
BENCH(UnderstandGeneralTokens::write_parse_name_routines);
BENCH(RTCommandGrammarLines::MistakeActionSub_routine);
BENCH(CommandGrammars::prepare);
BENCH(RTCommandGrammars::compile_conditions);
@ -60,13 +59,15 @@ and in particular, to every object instance and every kind of object.
=
typedef struct parsing_data {
struct command_grammar *understand_as_this_object; /* grammar for parsing the name at run-time */
struct command_grammar *understand_as_this_subject; /* grammar for parsing the name at run-time */
struct parsing_compilation_data compilation_data;
CLASS_DEFINITION
} parsing_data;
parsing_data *ParsingPlugin::new_data(inference_subject *subj) {
parsing_data *pd = CREATE(parsing_data);
pd->understand_as_this_object = NULL;
pd->understand_as_this_subject = NULL;
pd->compilation_data = Name::new_compilation_data(subj);
return pd;
}
@ -130,7 +131,7 @@ int ParsingPlugin::new_variable_notify(nonlocal_variable *var) {
switch (<<r>>) {
case 0:
if (Kinds::eq(<<rp>>, NonlocalVariables::kind(var))) {
RTParsing::understood_variable(var);
RTVariables::understood_variable(var);
NonlocalVariables::allow_to_be_zero(var);
}
break;
@ -154,7 +155,7 @@ property *P_name = NULL;
property *ParsingPlugin::name_property(void) {
if (P_name == NULL) {
P_name = ValueProperties::new_nameless(I"name", K_text);
Hierarchy::make_available(RTParsing::name_iname());
Hierarchy::make_available(RTProperties::iname(P_name));
}
return P_name;
}
@ -203,14 +204,14 @@ int ParsingPlugin::complete_model(int stage) {
Projects::get_language_of_play(Task::project()));
}
ValueProperties::assert(ParsingPlugin::name_property(), Instances::as_subject(I),
RTParsing::name_property_array(I, W, PW, from_kind), CERTAIN_CE);
Name::name_property_array(I, W, PW, from_kind), CERTAIN_CE);
}
@ We attach numbered parse name routines as properties for any object
where grammar has specified a need. (By default, this will not happen.)
@<Assert the Inter parse-name property@> =
inter_name *S = UnderstandGeneralTokens::compile_parse_name_property(subj);
inter_name *S = ParseName::compile_if_needed(subj);
if (S)
ValueProperties::assert(P_parse_name, subj,
Rvalues::from_iname(S), CERTAIN_CE);

View file

@ -163,18 +163,16 @@ kinds of value:
CompileRvalues::text(VH, value);
return;
}
#ifdef IF_MODULE
if ((K_understanding) && (Kinds::eq(kind_of_constant, K_understanding))) {
if (Wordings::empty(Node::get_text(value)))
internal_error("Text no longer available for CONSTANT/UNDERSTANDING");
inter_ti v1 = 0, v2 = 0;
RTParsing::compile_understanding(&v1, &v2, Node::get_text(value));
CompileRvalues::compile_understanding(&v1, &v2, Node::get_text(value));
if (Holsters::non_void_context(VH)) {
Holsters::holster_pair(VH, v1, v2);
}
return;
}
#endif
if (Kinds::eq(kind_of_constant, K_use_option)) {
use_option *uo = Rvalues::to_use_option(value);
Emit::holster_iname(VH, RTUseOptions::uo_iname(uo));
@ -342,3 +340,35 @@ compiler, rather than parsed from the source.)
@<This is a regular text literal@> =
inter_name *val_iname = TextLiterals::to_value(SW);
Emit::holster_iname(VH, val_iname);
@ Values for "understanding" refer to command grammar. We cache them as they
occur in the source text because they can compile to a fairly large slice of
code, and we don't want to repeat that:
=
typedef struct cached_understanding {
struct wording understanding_text; /* word range of the understanding text */
struct inter_name *cu_iname; /* function to test this */
CLASS_DEFINITION
} cached_understanding;
void CompileRvalues::compile_understanding(inter_ti *val1, inter_ti *val2, wording W) {
if (<subject-pronoun>(W)) {
*val1 = LITERAL_IVAL; *val2 = 0;
} else {
cached_understanding *cu;
LOOP_OVER(cu, cached_understanding)
if (Wordings::match(cu->understanding_text, W)) {
Emit::to_value_pair(val1, val2, cu->cu_iname);
return;
}
command_grammar *cg = Understand::consultation(W);
inter_name *iname = RTCommandGrammars::consult_iname(cg);
if (iname) {
cu = CREATE(cached_understanding);
cu->understanding_text = W;
cu->cu_iname = iname;
Emit::to_value_pair(val1, val2, iname);
}
}
}

View file

@ -0,0 +1,177 @@
[GPRs::] General Parsing Routines.
To compile "general parsing routines", or GPRs, which are runtime functions
used to match noun phrases in the command parser.
@h Introduction.
At runtime, the command parser handles noun phrases in two ways. Simple
nouns for an object are handled by giving it a |name| property listing
some dictionary words which could refer to it -- see //Name Properties//.
More complex nouns are handled with Inter functions called "general parsing
routines", or GPRs: the term is traditional and goes back to Inform 1 to 6.
GPRs are used for parsing values of kinds other than objects, too; in
particular, each notation for a literal value needs its own GPR -- see
//Literal Patterns//.
The GPRs compiled automatically by today's Inform follow the same conventions
and specification, so the tutorials in the Inform 6 manual, the DM4, may help
tp explain what we do in this section of code. No tutorials are needed today
because in Inform 7 all of the many GPRs in a typical story file are compiled
automatically, so that the story's author is not really aware of them at all.
To compile a GPR, Inform has to:
(*) work out where to put it, i.e., choose an |inter_name|;
(*) open a function body there;
(*) use a //gpr_kit// to give it local variables as needed;
(*) compile a "GPR head";
(*) compile code which actually looks at the stream of command words;
(*) compile a "GPR tail";
(*) and close the function body.
The "head" and "tail" parts of a GPR come in several sorts, compiled by functions
below, and they need to match each other.
@h GPR kits.
Since GPRs are needed for several different purposes, we provide a general
API for compiling them, based around the idea of a "GPR kit" -- slogan, it's
everything you need to compile your own GPR.
This is not an elegant structure. It simply keeps track of the many local
variables needed inside GPRs, which tend to be large, wrangly functions:
=
typedef struct gpr_kit {
inter_symbol *cur_addr_s;
inter_symbol *cur_len_s;
inter_symbol *cur_word_s;
inter_symbol *f_s;
inter_symbol *g_s;
inter_symbol *group_wn_s;
inter_symbol *instance_s;
inter_symbol *matched_number_s;
inter_symbol *mid_word_s;
inter_symbol *n_s;
inter_symbol *original_wn_s;
inter_symbol *pass_s;
inter_symbol *pass1_n_s;
inter_symbol *pass2_n_s;
inter_symbol *range_from_s;
inter_symbol *range_words_s;
inter_symbol *rv_s;
local_variable *rv_lv;
inter_symbol *sgn_s;
inter_symbol *spn_s;
inter_symbol *ss_s;
inter_symbol *tot_s;
inter_symbol *try_from_wn_s;
inter_symbol *v_s;
inter_symbol *w_s;
inter_symbol *wpos_s;
inter_symbol *x_s;
} gpr_kit;
@ The idea is to create a new kit which is initially empty:
=
gpr_kit GPRs::new_kit(void) {
gpr_kit kit;
kit.cur_addr_s = NULL;
kit.cur_len_s = NULL;
kit.cur_word_s = NULL;
kit.f_s = NULL;
kit.g_s = NULL;
kit.group_wn_s = NULL;
kit.instance_s = NULL;
kit.matched_number_s = NULL;
kit.mid_word_s = NULL;
kit.n_s = NULL;
kit.original_wn_s = NULL;
kit.pass_s = NULL;
kit.pass1_n_s = NULL;
kit.pass2_n_s = NULL;
kit.range_from_s = NULL;
kit.range_words_s = NULL;
kit.rv_s = NULL;
kit.rv_lv = NULL;
kit.sgn_s = NULL;
kit.spn_s = NULL;
kit.ss_s = NULL;
kit.tot_s = NULL;
kit.try_from_wn_s = NULL;
kit.v_s = NULL;
kit.w_s = NULL;
kit.wpos_s = NULL;
kit.x_s = NULL;
return kit;
}
@ Then, if you then need a local variable in the GPR you're making, declare it
and write its symbol to the appropriate field. But this is best done with the
following convenience functions.
=
void GPRs::add_standard_vars(gpr_kit *kit) {
kit->group_wn_s = LocalVariables::new_internal_as_symbol(I"group_wn");
kit->v_s = LocalVariables::new_internal_as_symbol(I"v");
kit->w_s = LocalVariables::new_internal_as_symbol(I"w");
kit->rv_lv = LocalVariables::new_internal(I"rv");
kit->rv_s = LocalVariables::declare(kit->rv_lv);
}
void GPRs::add_instance_var(gpr_kit *kit) {
kit->instance_s = LocalVariables::new_other_as_symbol(I"instance");
}
void GPRs::add_range_vars(gpr_kit *kit) {
kit->range_from_s = LocalVariables::new_internal_commented_as_symbol(I"range_from",
I"call parameter: word number of snippet start");
kit->range_words_s = LocalVariables::new_internal_commented_as_symbol(I"range_words",
I"call parameter: snippet length");
}
void GPRs::add_original_var(gpr_kit *kit) {
kit->original_wn_s = LocalVariables::new_internal_as_symbol(I"original_wn");
}
void GPRs::add_LP_vars(gpr_kit *kit) {
kit->wpos_s = LocalVariables::new_internal_as_symbol(I"wpos");
kit->mid_word_s = LocalVariables::new_internal_as_symbol(I"mid_word");
kit->matched_number_s = LocalVariables::new_internal_as_symbol(I"matched_number");
kit->cur_word_s = LocalVariables::new_internal_as_symbol(I"cur_word");
kit->cur_len_s = LocalVariables::new_internal_as_symbol(I"cur_len");
kit->cur_addr_s = LocalVariables::new_internal_as_symbol(I"cur_addr");
kit->sgn_s = LocalVariables::new_internal_as_symbol(I"sgn");
kit->tot_s = LocalVariables::new_internal_as_symbol(I"tot");
kit->f_s = LocalVariables::new_internal_as_symbol(I"f");
kit->x_s = LocalVariables::new_internal_as_symbol(I"x");
}
void GPRs::add_parse_name_vars(gpr_kit *kit) {
kit->original_wn_s = LocalVariables::new_internal_commented_as_symbol(I"original_wn",
I"first word of text parsed");
kit->group_wn_s = LocalVariables::new_internal_commented_as_symbol(I"group_wn",
I"first word matched against A/B/C/... disjunction");
kit->try_from_wn_s = LocalVariables::new_internal_commented_as_symbol(I"try_from_wn",
I"position to try matching from");
kit->n_s = LocalVariables::new_internal_commented_as_symbol(I"n",
I"number of words matched");
kit->f_s = LocalVariables::new_internal_commented_as_symbol(I"f",
I"flag: sufficiently good match found to justify success");
kit->w_s = LocalVariables::new_internal_commented_as_symbol(I"w",
I"for use by individual grammar lines");
kit->rv_lv = LocalVariables::new_internal(I"rv");
kit->rv_s = LocalVariables::declare(kit->rv_lv);
kit->g_s = LocalVariables::new_internal_commented_as_symbol(I"g",
I"temporary: success flag for parsing visibles");
kit->ss_s = LocalVariables::new_internal_commented_as_symbol(I"ss",
I"temporary: saves 'self' in distinguishing visibles");
kit->spn_s = LocalVariables::new_internal_commented_as_symbol(I"spn",
I"temporary: saves 'parsed_number' in parsing visibles");
kit->pass_s = LocalVariables::new_internal_commented_as_symbol(I"pass",
I"pass counter (1 to 3)");
kit->pass1_n_s = LocalVariables::new_internal_commented_as_symbol(I"pass1_n",
I"value of n recorded during pass 1");
kit->pass2_n_s = LocalVariables::new_internal_commented_as_symbol(I"pass2_n",
I"value of n recorded during pass 2");
}

View file

@ -571,7 +571,6 @@ void Hierarchy::establish(void) {
@e NOUN_FILTER_FN_HL
@e PARSE_NAMES_HAP
@e PARSE_NAME_FN_HL
@e PARSE_NAME_DASH_FN_HL
@e SCOPE_FILTERS_HAP
@e SCOPE_FILTER_FN_HL
@e SLASH_TOKENS_HAP
@ -591,6 +590,10 @@ void Hierarchy::establish(void) {
@e VERB_DIRECTIVE_SLASH_HL
@e VERB_DIRECTIVE_SPECIAL_HL
@e VERB_DIRECTIVE_TOPIC_HL
@e OBJECT_NOUNS_HAP
@e NAME_ARRAY_HL
@e COMMANDS_HAP
@e VERB_DECLARATION_ARRAY_HL
@e MISTAKEACTION_HL
@ -643,8 +646,6 @@ void Hierarchy::establish(void) {
H_F_G(SCOPE_FILTER_FN_HL, I"filter_fn", I"Scope_Filter")
H_END
H_BEGIN_AP(PARSE_NAMES_HAP, I"parse_name", I"_parse_name")
H_F_G(PARSE_NAME_FN_HL, I"parse_name_fn", I"Parse_Name_GV")
H_F_G(PARSE_NAME_DASH_FN_HL, I"parse_name_fn", I"PN_for_S")
H_END
H_BEGIN_AP(SLASH_TOKENS_HAP, I"slash_token", I"_slash_token")
H_F_G(SLASH_FN_HL, I"slash_fn", I"SlashGPR")
@ -652,6 +653,10 @@ void Hierarchy::establish(void) {
H_END
H_BEGIN(HierarchyLocations::completion_submodule(I, grammar))
H_BEGIN_AP(OBJECT_NOUNS_HAP, I"object_noun", I"_object_noun")
H_F_G(NAME_ARRAY_HL, I"name_array", I"name_array")
H_F_G(PARSE_NAME_FN_HL, I"parse_name_fn", I"parse_name")
H_END
H_BEGIN_AP(COMMANDS_HAP, I"command", I"_command")
H_F_G(VERB_DECLARATION_ARRAY_HL, NULL, I"GV_Grammar")
H_END

View file

@ -300,10 +300,10 @@ sets the |parsed_number| global to the value matched.
@<Compile the parse function@> =
inter_name *iname = RTLiteralPatterns::parse_fn_iname(lp);
packaging_state save = Functions::begin(iname);
gpr_kit gprk = UnderstandValueTokens::new_kit();
UnderstandValueTokens::add_original(&gprk);
UnderstandValueTokens::add_standard_set(&gprk);
UnderstandValueTokens::add_lp_vars(&gprk);
gpr_kit gprk = GPRs::new_kit();
GPRs::add_original_var(&gprk);
GPRs::add_standard_vars(&gprk);
GPRs::add_LP_vars(&gprk);
inter_symbol *succeeded_label = EmitCode::reserve_label(I".Succeeded");
inter_symbol *failed_label = EmitCode::reserve_label(I".Failed");
@<Match the literal pattern@>;

View file

@ -204,7 +204,7 @@ used to define new kinds; in this case it doesn't matter what we write, but
if (bits & TB_COLUMN_TOPIC) {
inter_ti v1 = 0, v2 = 0;
wording W = Node::get_text(cell);
RTParsing::compile_understanding(&v1, &v2, W);
CompileRvalues::compile_understanding(&v1, &v2, W);
EmitArrays::generic_entry(v1, v2);
} else {
#endif

View file

@ -101,6 +101,10 @@ void RTVariables::store_in_this_iname(nonlocal_variable *nlv, inter_name *iname)
RTVariables::set_NVE(nlv, RTVariables::nve_from_iname(iname));
}
void RTVariables::understood_variable(nonlocal_variable *nlv) {
RTVariables::store_in_this_iname(nlv, Hierarchy::find(PARSED_NUMBER_HL));
}
@ And in particular that's how we handle sentences like "Maximum score translates
into Inter as "MAX_SCORE".":

View file

@ -0,0 +1,115 @@
[Name::] Name Properties.
@ In the runtime command parser, the names of objects are parsed as nouns using
the values of two properties: |name|, a simple array of dictionary words, and
|parse_name|, a GPR function. These properties can be assigned either to single
instances of kinds of object, or to the kinds themselves, so we store their
inames in data attached to an inference subject.
For a subject which is neither an object nor a kind of object, these names are
forever null.
=
typedef struct parsing_compilation_data {
struct package_request *parsing_package;
struct inter_name *name_array_iname;
struct inter_name *parse_name_fn_iname;
} parsing_compilation_data;
@ I will be / PCD:
=
parsing_compilation_data Name::new_compilation_data(inference_subject *subj) {
parsing_compilation_data pcd;
pcd.parsing_package = NULL;
pcd.name_array_iname = NULL;
pcd.parse_name_fn_iname = NULL;
return pcd;
}
@ A single package holds the |name| and/or |parse_name| of a single subject.
=
package_request *Name::package(inference_subject *subj) {
if (PARSING_DATA_FOR_SUBJ(subj)->compilation_data.parsing_package == NULL)
PARSING_DATA_FOR_SUBJ(subj)->compilation_data.parsing_package =
Hierarchy::completion_package(OBJECT_NOUNS_HAP);
return PARSING_DATA_FOR_SUBJ(subj)->compilation_data.parsing_package;
}
inter_name *Name::get_name_array_iname(inference_subject *subj) {
if (PARSING_DATA_FOR_SUBJ(subj)->compilation_data.name_array_iname == NULL)
PARSING_DATA_FOR_SUBJ(subj)->compilation_data.name_array_iname =
Hierarchy::make_iname_in(NAME_ARRAY_HL, Name::package(subj));
return PARSING_DATA_FOR_SUBJ(subj)->compilation_data.name_array_iname;
}
inter_name *Name::get_parse_name_fn_iname(inference_subject *subj) {
if (PARSING_DATA_FOR_SUBJ(subj)->compilation_data.parse_name_fn_iname == NULL)
PARSING_DATA_FOR_SUBJ(subj)->compilation_data.parse_name_fn_iname =
Hierarchy::make_iname_in(PARSE_NAME_FN_HL, Name::package(subj));
return PARSING_DATA_FOR_SUBJ(subj)->compilation_data.parse_name_fn_iname;
}
@ Note that a |name| is never given to a kind: only to an instance. This is
unlike customary practice when writing Inform 6 code, and is one of the few
ways in which I7-generated code does not mimic I6 practice in command parsing.[1]
We take special care to ensure that something called "your ..." in the source text
-- "your nose", say -- is altered to "my ..." for purposes of parsing during play.
The test case |PM_PluralsFromKind| may be helpful here.
[1] This is because we do not want to imitate the unusual feature of I6 which
makes |name| an "additive" property, i.e., in which arrays accumulate as objects
inherit from classes. The concept of additive properties does not exist in Inter.
=
parse_node *Name::name_property_array(instance *I, wording W, wording PW,
int from_kind) {
inter_name *name_array = Name::get_name_array_iname(I->as_subject);
packaging_state save = EmitArrays::begin(name_array, K_value);
LOOP_THROUGH_WORDING(j, W) {
vocabulary_entry *ve = Lexer::word(j);
ve = PreformUtilities::find_corresponding_word(ve,
<second-person-possessive-pronoun-table>,
<first-person-possessive-pronoun-table>);
wchar_t *p = Vocabulary::get_exemplar(ve, FALSE);
TEMPORARY_TEXT(content)
WRITE_TO(content, "%w", p);
EmitArrays::dword_entry(content);
DISCARD_TEXT(content)
}
if (from_kind)
LOOP_THROUGH_WORDING(j, PW) {
int additional = TRUE;
LOOP_THROUGH_WORDING(k, W)
if (compare_word(j, Lexer::word(k)))
additional = FALSE;
if (additional) {
TEMPORARY_TEXT(content)
WRITE_TO(content, "%w", Lexer::word_text(j));
EmitArrays::plural_dword_entry(content);
DISCARD_TEXT(content)
}
}
if (PARSING_DATA(I)->understand_as_this_subject)
CommandGrammars::take_out_one_word_grammar(
PARSING_DATA(I)->understand_as_this_subject);
inference_subject *infs;
for (infs = KindSubjects::from_kind(Instances::to_kind(I));
infs; infs = InferenceSubjects::narrowest_broader_subject(infs)) {
if (PARSING_DATA_FOR_SUBJ(infs)) {
if (PARSING_DATA_FOR_SUBJ(infs)->understand_as_this_subject)
CommandGrammars::take_out_one_word_grammar(
PARSING_DATA_FOR_SUBJ(infs)->understand_as_this_subject);
}
}
EmitArrays::end(save);
Produce::annotate_i(name_array, INLINE_ARRAY_IANN, 1);
return Rvalues::from_iname(name_array);
}

File diff suppressed because it is too large Load diff

View file

@ -430,7 +430,7 @@ void RTCommandGrammarLines::compile_cg_line(gpr_kit *gprk, cg_line *cgl, int cg_
EmitCode::up();
break;
case CG_IS_SUBJECT:
UnderstandGeneralTokens::after_gl_failed(gprk, fail_label, cgl->pluralised);
ParseName::compile_reset_code_after_failed_line(gprk, fail_label, cgl->pluralised);
break;
case CG_IS_VALUE:
EmitCode::inv(STORE_BIP);
@ -620,9 +620,9 @@ void RTCommandGrammarLines::compile_slash_gprs(void) {
slash_gpr *sgpr;
LOOP_OVER(sgpr, slash_gpr) {
packaging_state save = Functions::begin(sgpr->sgpr_iname);
gpr_kit gprk = UnderstandValueTokens::new_kit();
UnderstandValueTokens::add_original(&gprk);
UnderstandValueTokens::add_standard_set(&gprk);
gpr_kit gprk = GPRs::new_kit();
GPRs::add_original_var(&gprk);
GPRs::add_standard_vars(&gprk);
RTCommandGrammarLines::compile_token_line(&gprk, TRUE, sgpr->first_choice, sgpr->last_choice, CG_IS_TOKEN, FALSE, NULL, NULL, gprk.group_wn_s, NULL);
EmitCode::inv(RETURN_BIP);

View file

@ -209,19 +209,19 @@ specified for all things. (This mimics I6 class-to-instance inheritance.)
void RTCommandGrammars::cg_compile_parse_name_lines(gpr_kit *gprk, command_grammar *cg) {
inference_subject *subj = cg->subj_understood;
if (PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_object != cg)
if (PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_subject != cg)
internal_error("link between subject and CG broken");
LOGIF(GRAMMAR, "Parse_name content for $j:\n", subj);
RTCommandGrammars::cg_compile_lines(gprk, PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_object);
RTCommandGrammars::cg_compile_lines(gprk, PARSING_DATA_FOR_SUBJ(subj)->understand_as_this_subject);
inference_subject *infs;
for (infs = InferenceSubjects::narrowest_broader_subject(subj);
infs; infs = InferenceSubjects::narrowest_broader_subject(infs)) {
if (PARSING_DATA_FOR_SUBJ(infs))
if (PARSING_DATA_FOR_SUBJ(infs)->understand_as_this_object) {
if (PARSING_DATA_FOR_SUBJ(infs)->understand_as_this_subject) {
LOGIF(GRAMMAR, "And parse_name content inherited from $j:\n", infs);
RTCommandGrammars::cg_compile_lines(gprk, PARSING_DATA_FOR_SUBJ(infs)->understand_as_this_object);
RTCommandGrammars::cg_compile_lines(gprk, PARSING_DATA_FOR_SUBJ(infs)->understand_as_this_subject);
}
}
}
@ -259,7 +259,7 @@ void RTCommandGrammars::compile(command_grammar *cg) {
RTCommandGrammarLines::reset_labels();
switch(cg->cg_is) {
case CG_IS_COMMAND: {
package_request *PR = Hierarchy::synoptic_package(COMMANDS_HAP);
package_request *PR = Hierarchy::completion_package(COMMANDS_HAP);
inter_name *array_iname = Hierarchy::make_iname_in(VERB_DECLARATION_ARRAY_HL, PR);
packaging_state save = RTCommandGrammars::cg_compile_Verb_directive_header(cg, array_iname);
RTCommandGrammars::cg_compile_lines(NULL, cg);
@ -267,11 +267,11 @@ void RTCommandGrammars::compile(command_grammar *cg) {
break;
}
case CG_IS_TOKEN: {
gpr_kit gprk = UnderstandValueTokens::new_kit();
gpr_kit gprk = GPRs::new_kit();
if (cg->compilation_data.cg_token_iname == NULL) internal_error("cg token not ready");
packaging_state save = Functions::begin(cg->compilation_data.cg_token_iname);
UnderstandValueTokens::add_original(&gprk);
UnderstandValueTokens::add_standard_set(&gprk);
GPRs::add_original_var(&gprk);
GPRs::add_standard_vars(&gprk);
EmitCode::inv(STORE_BIP);
EmitCode::down();
EmitCode::ref_symbol(K_value, gprk.original_wn_s);
@ -291,12 +291,12 @@ void RTCommandGrammars::compile(command_grammar *cg) {
break;
}
case CG_IS_CONSULT: {
gpr_kit gprk = UnderstandValueTokens::new_kit();
inter_name *iname = UnderstandGeneralTokens::consult_iname(cg);
gpr_kit gprk = GPRs::new_kit();
inter_name *iname = RTCommandGrammars::consult_iname(cg);
packaging_state save = Functions::begin(iname);
UnderstandValueTokens::add_range_calls(&gprk);
UnderstandValueTokens::add_original(&gprk);
UnderstandValueTokens::add_standard_set(&gprk);
GPRs::add_range_vars(&gprk);
GPRs::add_original_var(&gprk);
GPRs::add_standard_vars(&gprk);
EmitCode::inv(STORE_BIP);
EmitCode::down();
EmitCode::ref_iname(K_value, Hierarchy::find(WN_HL));
@ -320,25 +320,17 @@ void RTCommandGrammars::compile(command_grammar *cg) {
Functions::end(save);
break;
}
case CG_IS_SUBJECT: {
gpr_kit gprk = UnderstandValueTokens::new_kit();
packaging_state save = Emit::new_packaging_state();
if (UnderstandGeneralTokens::compile_parse_name_head(&save, &gprk, cg->subj_understood, cg, NULL)) {
RTCommandGrammars::cg_compile_parse_name_lines(&gprk, cg);
UnderstandGeneralTokens::compile_parse_name_tail(&gprk);
Functions::end(save);
}
case CG_IS_SUBJECT:
break;
}
case CG_IS_VALUE:
internal_error("iv");
break;
case CG_IS_PROPERTY_NAME: {
gpr_kit gprk = UnderstandValueTokens::new_kit();
gpr_kit gprk = GPRs::new_kit();
if (cg->compilation_data.cg_prn_iname == NULL) internal_error("PRN PN not ready");
packaging_state save = Functions::begin(cg->compilation_data.cg_prn_iname);
UnderstandValueTokens::add_original(&gprk);
UnderstandValueTokens::add_standard_set(&gprk);
GPRs::add_original_var(&gprk);
GPRs::add_standard_vars(&gprk);
EmitCode::inv(STORE_BIP);
EmitCode::down();
EmitCode::ref_symbol(K_value, gprk.original_wn_s);
@ -373,3 +365,22 @@ void RTCommandGrammars::compile_iv(gpr_kit *gprk, command_grammar *cg) {
void RTCommandGrammars::emit_determination_type(determination_type *gty) {
CompileValues::to_code_val(gty->term[0].what);
}
@ These are used to parse an explicit range of words (such as traditionally
found in the CONSULT command) at run time, and they are not I6 grammar
tokens, and do not appear in |Verb| declarations: otherwise, such
routines are very similar to GPRs.
First, we need to look after a pointer to the CG used to hold the grammar
being matched against the snippet of words.
=
inter_name *RTCommandGrammars::consult_iname(command_grammar *cg) {
if (cg == NULL) return NULL;
if (cg->compilation_data.cg_consult_iname == NULL) {
current_sentence = cg->where_cg_created;
package_request *PR = Hierarchy::local_package(CONSULT_TOKENS_HAP);
cg->compilation_data.cg_consult_iname = Hierarchy::make_iname_in(CONSULT_FN_HL, PR);
}
return cg->compilation_data.cg_consult_iname;
}

File diff suppressed because it is too large Load diff

View file

@ -1,112 +0,0 @@
[RTParsing::] Parsing.
@
=
void RTParsing::understood_variable(nonlocal_variable *var) {
RTVariables::store_in_this_iname(var, Hierarchy::find(PARSED_NUMBER_HL));
}
@ The name property requires special care, partly over I6 eccentricities
such as the way that single-letter dictionary words can be misinterpreted
as characters (hence the double slash below), but also because something
called "your ..." in the source text -- "your nose", say -- needs to
be altered to "my ..." for purposes of parsing during play.
Note that |name| is additive in I6 terms, meaning that its values
accumulate from class down to instance: but we prevent this, by only
compiling |name| properties for instance objects directly. The practical
consequence is that we have to imitate this inheritance when it comes
to single-word grammar for things. Recall that a sentence like "Understand
"cube" as the block" formally creates a grammar line which ought to
be parsed as part of some elaborate |parse_name| property: but that for
efficiency's sake, we notice that "cube" is only one word and so put
it into the |name| property instead. And we need to perform the same trick
for the kinds we inherit from.
=
parse_node *RTParsing::name_property_array(instance *I, wording W, wording PW,
int from_kind) {
package_request *PR =
Hierarchy::package_within(INLINE_PROPERTIES_HAP, RTInstances::package(I));
inter_name *name_array = Hierarchy::make_iname_in(INLINE_PROPERTY_HL, PR);
packaging_state save = EmitArrays::begin(name_array, K_value);
LOOP_THROUGH_WORDING(j, W) {
vocabulary_entry *ve = Lexer::word(j);
ve = PreformUtilities::find_corresponding_word(ve,
<second-person-possessive-pronoun-table>,
<first-person-possessive-pronoun-table>);
wchar_t *p = Vocabulary::get_exemplar(ve, FALSE);
TEMPORARY_TEXT(content)
WRITE_TO(content, "%w", p);
EmitArrays::dword_entry(content);
DISCARD_TEXT(content)
}
if (from_kind) /* see test case PM_PluralsFromKind */
LOOP_THROUGH_WORDING(j, PW) {
int additional = TRUE;
LOOP_THROUGH_WORDING(k, W)
if (compare_word(j, Lexer::word(k)))
additional = FALSE;
if (additional) {
TEMPORARY_TEXT(content)
WRITE_TO(content, "%w", Lexer::word_text(j));
EmitArrays::plural_dword_entry(content);
DISCARD_TEXT(content)
}
}
if (PARSING_DATA(I)->understand_as_this_object)
CommandGrammars::take_out_one_word_grammar(
PARSING_DATA(I)->understand_as_this_object);
inference_subject *infs;
for (infs = KindSubjects::from_kind(Instances::to_kind(I));
infs; infs = InferenceSubjects::narrowest_broader_subject(infs)) {
if (PARSING_DATA_FOR_SUBJ(infs)) {
if (PARSING_DATA_FOR_SUBJ(infs)->understand_as_this_object)
CommandGrammars::take_out_one_word_grammar(
PARSING_DATA_FOR_SUBJ(infs)->understand_as_this_object);
}
}
EmitArrays::end(save);
Produce::annotate_i(name_array, INLINE_ARRAY_IANN, 1);
return Rvalues::from_iname(name_array);
}
inter_name *RTParsing::name_iname(void) {
return RTProperties::iname(ParsingPlugin::name_property());
}
@ We cache grammar occurring in the source text in conditions, and so forth:
=
typedef struct cached_understanding {
struct wording understanding_text; /* word range of the understanding text */
struct inter_name *cu_iname; /* the runtime name for this |Consult_Grammar_N| routine */
CLASS_DEFINITION
} cached_understanding;
void RTParsing::compile_understanding(inter_ti *val1, inter_ti *val2, wording W) {
if (<subject-pronoun>(W)) { *val1 = LITERAL_IVAL; *val2 = 0; }
else {
cached_understanding *cu;
LOOP_OVER(cu, cached_understanding)
if (Wordings::match(cu->understanding_text, W)) {
Emit::to_value_pair(val1, val2, cu->cu_iname);
return;
}
command_grammar *cg = Understand::consultation(W);
inter_name *iname = UnderstandGeneralTokens::consult_iname(cg);
if (iname) {
cu = CREATE(cached_understanding);
cu->understanding_text = W;
cu->cu_iname = iname;
Emit::to_value_pair(val1, val2, iname);
}
}
}

View file

@ -5,124 +5,13 @@ and I7 makes heavy use of GPR tokens to achieve its ends. This section is
where the necessary I6 routines are compiled.
@ =
typedef struct gpr_kit {
inter_symbol *cur_addr_s;
inter_symbol *cur_len_s;
inter_symbol *cur_word_s;
inter_symbol *f_s;
inter_symbol *g_s;
inter_symbol *group_wn_s;
inter_symbol *instance_s;
inter_symbol *matched_number_s;
inter_symbol *mid_word_s;
inter_symbol *n_s;
inter_symbol *original_wn_s;
inter_symbol *pass_s;
inter_symbol *pass1_n_s;
inter_symbol *pass2_n_s;
inter_symbol *range_from_s;
inter_symbol *range_words_s;
inter_symbol *rv_s;
local_variable *rv_lv;
inter_symbol *sgn_s;
inter_symbol *spn_s;
inter_symbol *ss_s;
inter_symbol *tot_s;
inter_symbol *try_from_wn_s;
inter_symbol *v_s;
inter_symbol *w_s;
inter_symbol *wpos_s;
inter_symbol *x_s;
} gpr_kit;
gpr_kit UnderstandValueTokens::new_kit(void) {
gpr_kit gprk;
gprk.cur_addr_s = NULL;
gprk.cur_len_s = NULL;
gprk.cur_word_s = NULL;
gprk.f_s = NULL;
gprk.g_s = NULL;
gprk.group_wn_s = NULL;
gprk.instance_s = NULL;
gprk.matched_number_s = NULL;
gprk.mid_word_s = NULL;
gprk.n_s = NULL;
gprk.original_wn_s = NULL;
gprk.pass_s = NULL;
gprk.pass1_n_s = NULL;
gprk.pass2_n_s = NULL;
gprk.range_from_s = NULL;
gprk.range_words_s = NULL;
gprk.rv_s = NULL;
gprk.rv_lv = NULL;
gprk.sgn_s = NULL;
gprk.spn_s = NULL;
gprk.ss_s = NULL;
gprk.tot_s = NULL;
gprk.try_from_wn_s = NULL;
gprk.v_s = NULL;
gprk.w_s = NULL;
gprk.wpos_s = NULL;
gprk.x_s = NULL;
return gprk;
}
void UnderstandValueTokens::add_instance_call(gpr_kit *gprk) {
gprk->instance_s = LocalVariables::new_other_as_symbol(I"instance");
}
void UnderstandValueTokens::add_range_calls(gpr_kit *gprk) {
gprk->range_from_s = LocalVariables::new_internal_commented_as_symbol(I"range_from", I"call parameter: word number of snippet start");
gprk->range_words_s = LocalVariables::new_internal_commented_as_symbol(I"range_words", I"call parameter: snippet length");
}
void UnderstandValueTokens::add_original(gpr_kit *gprk) {
gprk->original_wn_s = LocalVariables::new_internal_as_symbol(I"original_wn");
}
void UnderstandValueTokens::add_standard_set(gpr_kit *gprk) {
gprk->group_wn_s = LocalVariables::new_internal_as_symbol(I"group_wn");
gprk->v_s = LocalVariables::new_internal_as_symbol(I"v");
gprk->w_s = LocalVariables::new_internal_as_symbol(I"w");
gprk->rv_lv = LocalVariables::new_internal(I"rv");
gprk->rv_s = LocalVariables::declare(gprk->rv_lv);
}
void UnderstandValueTokens::add_lp_vars(gpr_kit *gprk) {
gprk->wpos_s = LocalVariables::new_internal_as_symbol(I"wpos");
gprk->mid_word_s = LocalVariables::new_internal_as_symbol(I"mid_word");
gprk->matched_number_s = LocalVariables::new_internal_as_symbol(I"matched_number");
gprk->cur_word_s = LocalVariables::new_internal_as_symbol(I"cur_word");
gprk->cur_len_s = LocalVariables::new_internal_as_symbol(I"cur_len");
gprk->cur_addr_s = LocalVariables::new_internal_as_symbol(I"cur_addr");
gprk->sgn_s = LocalVariables::new_internal_as_symbol(I"sgn");
gprk->tot_s = LocalVariables::new_internal_as_symbol(I"tot");
gprk->f_s = LocalVariables::new_internal_as_symbol(I"f");
gprk->x_s = LocalVariables::new_internal_as_symbol(I"x");
}
void UnderstandValueTokens::add_parse_name_vars(gpr_kit *gprk) {
gprk->original_wn_s = LocalVariables::new_internal_commented_as_symbol(I"original_wn", I"first word of text parsed");
gprk->group_wn_s = LocalVariables::new_internal_commented_as_symbol(I"group_wn", I"first word matched against A/B/C/... disjunction");
gprk->try_from_wn_s = LocalVariables::new_internal_commented_as_symbol(I"try_from_wn", I"position to try matching from");
gprk->n_s = LocalVariables::new_internal_commented_as_symbol(I"n", I"number of words matched");
gprk->f_s = LocalVariables::new_internal_commented_as_symbol(I"f", I"flag: sufficiently good match found to justify success");
gprk->w_s = LocalVariables::new_internal_commented_as_symbol(I"w", I"for use by individual grammar lines");
gprk->rv_lv = LocalVariables::new_internal(I"rv");
gprk->rv_s = LocalVariables::declare(gprk->rv_lv);
gprk->g_s = LocalVariables::new_internal_commented_as_symbol(I"g", I"temporary: success flag for parsing visibles");
gprk->ss_s = LocalVariables::new_internal_commented_as_symbol(I"ss", I"temporary: saves 'self' in distinguishing visibles");
gprk->spn_s = LocalVariables::new_internal_commented_as_symbol(I"spn", I"temporary: saves 'parsed_number' in parsing visibles");
gprk->pass_s = LocalVariables::new_internal_commented_as_symbol(I"pass", I"pass counter (1 to 3)");
gprk->pass1_n_s = LocalVariables::new_internal_commented_as_symbol(I"pass1_n", I"value of n recorded during pass 1");
gprk->pass2_n_s = LocalVariables::new_internal_commented_as_symbol(I"pass2_n", I"value of n recorded during pass 2");
}
void UnderstandValueTokens::number(void) {
inter_name *iname = Hierarchy::find(DECIMAL_TOKEN_INNER_HL);
packaging_state save = Functions::begin(iname);
gpr_kit gprk = UnderstandValueTokens::new_kit();
UnderstandValueTokens::add_original(&gprk);
gpr_kit gprk = GPRs::new_kit();
GPRs::add_original_var(&gprk);
command_grammar *cg = CommandGrammars::get_parsing_grammar(K_number);
if (cg) RTCommandGrammars::compile_iv(&gprk, cg);
EmitCode::inv(RETURN_BIP);
@ -136,8 +25,8 @@ void UnderstandValueTokens::number(void) {
void UnderstandValueTokens::time(void) {
inter_name *iname = Hierarchy::find(TIME_TOKEN_INNER_HL);
packaging_state save = Functions::begin(iname);
gpr_kit gprk = UnderstandValueTokens::new_kit();
UnderstandValueTokens::add_original(&gprk);
gpr_kit gprk = GPRs::new_kit();
GPRs::add_original_var(&gprk);
kind *K = TimesOfDay::kind();
if (K) {
command_grammar *cg = CommandGrammars::get_parsing_grammar(K);
@ -154,8 +43,8 @@ void UnderstandValueTokens::time(void) {
void UnderstandValueTokens::truth_state(void) {
inter_name *iname = Hierarchy::find(TRUTH_STATE_TOKEN_INNER_HL);
packaging_state save = Functions::begin(iname);
gpr_kit gprk = UnderstandValueTokens::new_kit();
UnderstandValueTokens::add_original(&gprk);
gpr_kit gprk = GPRs::new_kit();
GPRs::add_original_var(&gprk);
command_grammar *cg = CommandGrammars::get_parsing_grammar(K_truth_state);
if (cg) RTCommandGrammars::compile_iv(&gprk, cg);
EmitCode::inv(RETURN_BIP);
@ -180,20 +69,20 @@ void UnderstandValueTokens::agent(compilation_subtask *t) {
need_lf_vars = TRUE;
break;
}
gpr_kit gprk = UnderstandValueTokens::new_kit();
UnderstandValueTokens::add_original(&gprk);
UnderstandValueTokens::add_standard_set(&gprk);
if (need_lf_vars) UnderstandValueTokens::add_lp_vars(&gprk);
gpr_kit gprk = GPRs::new_kit();
GPRs::add_original_var(&gprk);
GPRs::add_standard_vars(&gprk);
if (need_lf_vars) GPRs::add_LP_vars(&gprk);
@<Compile body of kind GPR@>;
Functions::end(save);
if (Kinds::Behaviour::is_an_enumeration(K)) {
inter_name *iname = RTKindConstructors::get_instance_GPR_iname(K);
packaging_state save = Functions::begin(iname);
gpr_kit gprk = UnderstandValueTokens::new_kit();
UnderstandValueTokens::add_instance_call(&gprk);
UnderstandValueTokens::add_original(&gprk);
UnderstandValueTokens::add_standard_set(&gprk);
gpr_kit gprk = GPRs::new_kit();
GPRs::add_instance_var(&gprk);
GPRs::add_original_var(&gprk);
GPRs::add_standard_vars(&gprk);
GV_IS_VALUE_instance_mode = TRUE;
@<Compile body of kind GPR@>;
GV_IS_VALUE_instance_mode = FALSE;
@ -218,20 +107,20 @@ void UnderstandValueTokens::compile_type_gprs(void) {
need_lf_vars = TRUE;
break;
}
gpr_kit gprk = UnderstandValueTokens::new_kit();
UnderstandValueTokens::add_original(&gprk);
UnderstandValueTokens::add_standard_set(&gprk);
if (need_lf_vars) UnderstandValueTokens::add_lp_vars(&gprk);
gpr_kit gprk = GPRs::new_kit();
GPRs::add_original_var(&gprk);
GPRs::add_standard_vars(&gprk);
if (need_lf_vars) GPRs::add_LP_vars(&gprk);
@<Compile body of kind GPR@>;
Functions::end(save);
if (Kinds::Behaviour::is_an_enumeration(K)) {
inter_name *iname = RTKindConstructors::get_instance_GPR_iname(K);
packaging_state save = Functions::begin(iname);
gpr_kit gprk = UnderstandValueTokens::new_kit();
UnderstandValueTokens::add_instance_call(&gprk);
UnderstandValueTokens::add_original(&gprk);
UnderstandValueTokens::add_standard_set(&gprk);
gpr_kit gprk = GPRs::new_kit();
GPRs::add_instance_var(&gprk);
GPRs::add_original_var(&gprk);
GPRs::add_standard_vars(&gprk);
GV_IS_VALUE_instance_mode = TRUE;
@<Compile body of kind GPR@>;
GV_IS_VALUE_instance_mode = FALSE;

View file

@ -26,6 +26,7 @@ Chapter 2: Emission
Showme Command
Here, Nowhere and Everywhere
Short Names
General Parsing Routines
Chapter 3: Basics
Generic Module
@ -74,15 +75,15 @@ Chapter 6: Completion Resources
Bibliographic Data
The Player
The Map
Name Properties
Parse Name Properties
Chapter 7: Still Unsorted
Emit Property Values
Instance Counting
Action Patterns
Going
Parsing
Command Grammars
Command Grammar Lines
Noun Filter Tokens
Tokens Parsing Values
General Parsing Routines