mirror of
https://github.com/ganelson/inform.git
synced 2024-07-02 23:14:57 +03:00
Started in on grammar compilation
This commit is contained in:
parent
438196af49
commit
5f12389a22
|
@ -165,7 +165,7 @@ form, so this is not as bloated a structure as it looks.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">where_cg_created</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">where_cg_created</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">slashed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">slashed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">determined</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">determined</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">compilation_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RTCommandGrammars::new_compilation_data</span><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">compilation_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RTCommandGrammars::new_compilation_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -343,7 +343,6 @@ token called "[suitable colour]".
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::cg_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CG_IS_TOKEN</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::cg_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CG_IS_TOKEN</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">token_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">token_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTCommandGrammars::new_CG_IS_TOKEN</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -497,7 +496,6 @@ property value used adjectivally like this can be given a CG.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::cg_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CG_IS_PROPERTY_NAME</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><a href="5-cg.html#SP4" class="function-link"><span class="function-syntax">CommandGrammars::cg_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CG_IS_PROPERTY_NAME</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EitherOrProperties::set_parsing_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</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">EitherOrProperties::set_parsing_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">prn_understood</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="element-syntax">prn_understood</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTCommandGrammars::new_CG_IS_PROPERTY_NAME</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
|
@ -123,6 +123,7 @@ for generating that is a little delicate.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">UnderstandFilterTokens::compile</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">UnderstandFilterTokens::compile</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">INTER4_CSEQ</span><span 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">INTER4_CSEQ</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="5-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_all</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">RTCommandGrammars::compile_all</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">UnderstandFilterTokens::compile</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">UnderstandFilterTokens::compile</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
|
@ -484,7 +484,7 @@ code, and we don't want to repeat that:
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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">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="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::get_consult_fn_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="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"> = </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">-></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">-></span><span class="element-syntax">understanding_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -126,7 +126,7 @@ enforced; it's fine to store arbitrary data with <span class="extract"><span cla
|
||||||
<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>
|
<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>
|
||||||
<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">EmitArrays::begin_late_verb</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">EmitArrays::begin_late_verb</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP4">§4</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_late_verb</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">EmitArrays::begin_late_verb</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">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><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><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="identifier-syntax">Produce::annotate_iname_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">VERBARRAY_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="identifier-syntax">Produce::annotate_iname_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">VERBARRAY_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||||
|
@ -181,7 +181,7 @@ 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><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="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">§4</a><br/>Command Grammars - <a href="7-cg.html#SP4">§4</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">§9</a>, <a href="7-cgl.html#SP10">§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">§4</a><br/>Command Grammars - <a href="7-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP9">§9</a>, <a href="7-cgl.html#SP10">§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">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">(), &</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">content</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">(), &</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">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><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>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">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">§4</a><br/>List Literals - <a href="4-ll.html#SP1">§1</a>, <a href="4-ll.html#SP2">§2</a><br/>Text Literals - <a href="4-tl.html#SP1">§1</a><br/>Text Substitutions - <a href="4-ts.html#SP1">§1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Relation Literals - <a href="4-rl.html#SP1">§1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">§1</a><br/>Door Instances - <a href="5-di.html#SP6">§6</a><br/>Multimedia - <a href="5-mlt.html#SP2_1">§2.1</a>, <a href="5-mlt.html#SP2_2">§2.2</a><br/>Tables - <a href="5-tbl.html#SP2_1_1">§2.1.1</a>, <a href="5-tbl.html#SP2_1_1_1">§2.1.1.1</a>, <a href="5-tbl.html#SP2_2">§2.2</a><br/>Relations - <a href="5-rlt.html#SP6_3">§6.3</a>, <a href="5-rlt.html#SP6_3_2">§6.3.2</a>, <a href="5-rlt.html#SP7">§7</a>, <a href="5-rlt.html#SP10">§10</a>, <a href="5-rlt.html#SP10_3">§10.3</a><br/>Kind IDs - <a href="5-ki.html#SP9_1">§9.1</a><br/>Test Scripts - <a href="5-ts.html#SP4">§4</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP1">§1</a><br/>Name Properties - <a href="6-np.html#SP4">§4</a><br/>Action Bitmap Property - <a href="6-abp.html#SP1">§1</a><br/>Command Grammars - <a href="7-cg.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">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">§4</a><br/>List Literals - <a href="4-ll.html#SP1">§1</a>, <a href="4-ll.html#SP2">§2</a><br/>Text Literals - <a href="4-tl.html#SP1">§1</a><br/>Text Substitutions - <a href="4-ts.html#SP1">§1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Relation Literals - <a href="4-rl.html#SP1">§1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">§1</a><br/>Door Instances - <a href="5-di.html#SP6">§6</a><br/>Multimedia - <a href="5-mlt.html#SP2_1">§2.1</a>, <a href="5-mlt.html#SP2_2">§2.2</a><br/>Tables - <a href="5-tbl.html#SP2_1_1">§2.1.1</a>, <a href="5-tbl.html#SP2_1_1_1">§2.1.1.1</a>, <a href="5-tbl.html#SP2_2">§2.2</a><br/>Relations - <a href="5-rlt.html#SP6_3">§6.3</a>, <a href="5-rlt.html#SP6_3_2">§6.3.2</a>, <a href="5-rlt.html#SP7">§7</a>, <a href="5-rlt.html#SP10">§10</a>, <a href="5-rlt.html#SP10_3">§10.3</a><br/>Kind IDs - <a href="5-ki.html#SP9_1">§9.1</a><br/>Test Scripts - <a href="5-ts.html#SP4">§4</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP1">§1</a><br/>Name Properties - <a href="6-np.html#SP4">§4</a><br/>Action Bitmap Property - <a href="6-abp.html#SP1">§1</a><br/>Command Grammars - <a href="7-cg.html#SP5">§5</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><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><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>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -97,7 +97,7 @@ reference points. But as newly-created packages they are initially empty.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::incarnate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::get_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"synoptic"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_module"</span><span class="plain-syntax">)-></span><span class="identifier-syntax">the_package</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::incarnate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Packaging::get_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">main_emission_tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"synoptic"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_module"</span><span class="plain-syntax">)-></span><span class="identifier-syntax">the_package</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">main_emission_tree</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">main_emission_tree</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::tree</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">Emit::tree</span></span>:<br/><a href="2-emt.html#SP4">§4</a>, <a href="2-emt.html#SP5">§5</a>, <a href="2-emt.html#SP7">§7</a>, <a href="2-emt.html#SP8">§8</a>, <a href="2-emt.html#SP9">§9</a>, <a href="2-emt.html#SP10">§10</a>, <a href="2-emt.html#SP11">§11</a>, <a href="2-emt.html#SP12">§12</a>, <a href="2-emt.html#SP14">§14</a>, <a href="2-emt.html#SP15">§15</a>, <a href="2-emt.html#SP16">§16</a>, <a href="2-emt.html#SP17">§17</a>, <a href="2-emt.html#SP21">§21</a><br/>Hierarchy - <a href="2-hrr.html#SP1">§1</a>, <a href="2-hrr.html#SP2">§2</a>, <a href="2-hrr.html#SP8">§8</a>, <a href="2-hrr.html#SP9">§9</a>, <a href="2-hrr.html#SP11">§11</a>, <a href="2-hrr.html#SP12">§12</a>, <a href="2-hrr.html#SP13">§13</a>, <a href="2-hrr.html#SP14">§14</a>, <a href="2-hrr.html#SP15">§15</a>, <a href="2-hrr.html#SP16">§16</a>, <a href="2-hrr.html#SP17">§17</a>, <a href="2-hrr.html#SP18">§18</a>, <a href="2-hrr.html#SP19">§19</a>, <a href="2-hrr.html#SP20">§20</a>, <a href="2-hrr.html#SP21">§21</a>, <a href="2-hrr.html#SP22">§22</a><br/>Compilation Units - <a href="2-cu.html#SP2_1">§2.1</a><br/>Emit Code - <a href="2-ec.html#SP2">§2</a>, <a href="2-ec.html#SP3">§3</a>, <a href="2-ec.html#SP4">§4</a>, <a href="2-ec.html#SP5">§5</a>, <a href="2-ec.html#SP7">§7</a>, <a href="2-ec.html#SP9">§9</a>, <a href="2-ec.html#SP11">§11</a>, <a href="2-ec.html#SP12">§12</a>, <a href="2-ec.html#SP13">§13</a>, <a href="2-ec.html#SP14">§14</a>, <a href="2-ec.html#SP15">§15</a>, <a href="2-ec.html#SP16">§16</a><br/>Emit Arrays - <a href="2-ea.html#SP4">§4</a>, <a href="2-ea.html#SP6">§6</a><br/>Default Values - <a href="2-dv.html#SP1">§1</a><br/>Enclosures - <a href="4-enc.html#SP1">§1</a><br/>Text Substitutions - <a href="4-ts.html#SP7_4">§7.4</a><br/>Rules - <a href="5-rls.html#SP6">§6</a><br/>Variables - <a href="5-vrb.html#SP6">§6</a>, <a href="5-vrb.html#SP14">§14</a><br/>Kind Constructors - <a href="5-kc.html#SP4">§4</a>, <a href="5-kc.html#SP9">§9</a>, <a href="5-kc.html#SP11">§11</a><br/>Property Permissions - <a href="6-pp.html#SP2">§2</a>, <a href="6-pp.html#SP3">§3</a><br/>Property Values - <a href="6-pv.html#SP2">§2</a>, <a href="6-pv.html#SP2_2_1">§2.2.1</a><br/>Command Grammars - <a href="7-cg.html#SP1">§1</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::tree</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">Emit::tree</span></span>:<br/><a href="2-emt.html#SP4">§4</a>, <a href="2-emt.html#SP5">§5</a>, <a href="2-emt.html#SP7">§7</a>, <a href="2-emt.html#SP8">§8</a>, <a href="2-emt.html#SP9">§9</a>, <a href="2-emt.html#SP10">§10</a>, <a href="2-emt.html#SP11">§11</a>, <a href="2-emt.html#SP12">§12</a>, <a href="2-emt.html#SP14">§14</a>, <a href="2-emt.html#SP15">§15</a>, <a href="2-emt.html#SP16">§16</a>, <a href="2-emt.html#SP17">§17</a>, <a href="2-emt.html#SP21">§21</a><br/>Hierarchy - <a href="2-hrr.html#SP1">§1</a>, <a href="2-hrr.html#SP2">§2</a>, <a href="2-hrr.html#SP8">§8</a>, <a href="2-hrr.html#SP9">§9</a>, <a href="2-hrr.html#SP11">§11</a>, <a href="2-hrr.html#SP12">§12</a>, <a href="2-hrr.html#SP13">§13</a>, <a href="2-hrr.html#SP14">§14</a>, <a href="2-hrr.html#SP15">§15</a>, <a href="2-hrr.html#SP16">§16</a>, <a href="2-hrr.html#SP17">§17</a>, <a href="2-hrr.html#SP18">§18</a>, <a href="2-hrr.html#SP19">§19</a>, <a href="2-hrr.html#SP20">§20</a>, <a href="2-hrr.html#SP21">§21</a>, <a href="2-hrr.html#SP22">§22</a><br/>Compilation Units - <a href="2-cu.html#SP2_1">§2.1</a><br/>Emit Code - <a href="2-ec.html#SP2">§2</a>, <a href="2-ec.html#SP3">§3</a>, <a href="2-ec.html#SP4">§4</a>, <a href="2-ec.html#SP5">§5</a>, <a href="2-ec.html#SP7">§7</a>, <a href="2-ec.html#SP9">§9</a>, <a href="2-ec.html#SP11">§11</a>, <a href="2-ec.html#SP12">§12</a>, <a href="2-ec.html#SP13">§13</a>, <a href="2-ec.html#SP14">§14</a>, <a href="2-ec.html#SP15">§15</a>, <a href="2-ec.html#SP16">§16</a><br/>Emit Arrays - <a href="2-ea.html#SP4">§4</a>, <a href="2-ea.html#SP6">§6</a><br/>Default Values - <a href="2-dv.html#SP1">§1</a><br/>Enclosures - <a href="4-enc.html#SP1">§1</a><br/>Text Substitutions - <a href="4-ts.html#SP7_4">§7.4</a><br/>Rules - <a href="5-rls.html#SP6">§6</a><br/>Variables - <a href="5-vrb.html#SP6">§6</a>, <a href="5-vrb.html#SP14">§14</a><br/>Kind Constructors - <a href="5-kc.html#SP4">§4</a>, <a href="5-kc.html#SP9">§9</a>, <a href="5-kc.html#SP11">§11</a><br/>Property Permissions - <a href="6-pp.html#SP2">§2</a>, <a href="6-pp.html#SP3">§3</a><br/>Property Values - <a href="6-pv.html#SP2">§2</a>, <a href="6-pv.html#SP2_2_1">§2.2.1</a><br/>Command Grammars - <a href="7-cg.html#SP2">§2</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">§10</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">main_emission_tree</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">main_emission_tree</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ it represents an actual number at run-time, the second if not:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::numeric_constant</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">Emit::numeric_constant</span></span>:<br/>Hierarchy - <a href="2-hrr.html#SP23">§23</a><br/>Compilation Units - <a href="2-cu.html#SP2_1_2">§2.1.2</a><br/>The Heap - <a href="2-th.html#SP2">§2</a><br/>Generic Module - <a href="3-gm.html#SP3">§3</a><br/>Completion Module - <a href="3-cm.html#SP1_3">§1.3</a>, <a href="3-cm.html#SP1_4">§1.4</a>, <a href="3-cm.html#SP1_5">§1.5</a><br/>Use Options - <a href="3-uo.html#SP1">§1</a>, <a href="3-uo.html#SP1_2">§1.2</a><br/>Responses - <a href="4-rsp.html#SP6">§6</a><br/>Activities - <a href="5-act.html#SP6">§6</a><br/>Chronology - <a href="5-chr.html#SP3_3">§3.3</a>, <a href="5-chr.html#SP7_1">§7.1</a><br/>Conjugations - <a href="5-cnj.html#SP12">§12</a><br/>Multimedia - <a href="5-mlt.html#SP1">§1</a><br/>Tables - <a href="5-tbl.html#SP2_1_1_1_3">§2.1.1.1.3</a>, <a href="5-tbl.html#SP2_3">§2.3</a><br/>Table Columns - <a href="5-tc.html#SP2">§2</a><br/>Rulebooks - <a href="5-rlb.html#SP6_2">§6.2</a><br/>Variables - <a href="5-vrb.html#SP13">§13</a><br/>Properties - <a href="5-prp.html#SP6_3">§6.3</a><br/>Relations - <a href="5-rlt.html#SP6_3">§6.3</a>, <a href="5-rlt.html#SP10_3">§10.3</a><br/>Kind Constructors - <a href="5-kc.html#SP11">§11</a><br/>Kind IDs - <a href="5-ki.html#SP9_2">§9.2</a><br/>Actions - <a href="5-act2.html#SP8_1">§8.1</a>, <a href="5-act2.html#SP8_3">§8.3</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP1">§1</a><br/>Command Grammars - <a href="7-cg.html#SP1">§1</a>, <a href="7-cg.html#SP2">§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">con_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::numeric_constant</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">Emit::numeric_constant</span></span>:<br/>Hierarchy - <a href="2-hrr.html#SP23">§23</a><br/>Compilation Units - <a href="2-cu.html#SP2_1_2">§2.1.2</a><br/>The Heap - <a href="2-th.html#SP2">§2</a><br/>Generic Module - <a href="3-gm.html#SP3">§3</a><br/>Completion Module - <a href="3-cm.html#SP1_3">§1.3</a>, <a href="3-cm.html#SP1_4">§1.4</a>, <a href="3-cm.html#SP1_5">§1.5</a><br/>Use Options - <a href="3-uo.html#SP1">§1</a>, <a href="3-uo.html#SP1_2">§1.2</a><br/>Responses - <a href="4-rsp.html#SP6">§6</a><br/>Activities - <a href="5-act.html#SP6">§6</a><br/>Chronology - <a href="5-chr.html#SP3_3">§3.3</a>, <a href="5-chr.html#SP7_1">§7.1</a><br/>Conjugations - <a href="5-cnj.html#SP12">§12</a><br/>Multimedia - <a href="5-mlt.html#SP1">§1</a><br/>Tables - <a href="5-tbl.html#SP2_1_1_1_3">§2.1.1.1.3</a>, <a href="5-tbl.html#SP2_3">§2.3</a><br/>Table Columns - <a href="5-tc.html#SP2">§2</a><br/>Rulebooks - <a href="5-rlb.html#SP6_2">§6.2</a><br/>Variables - <a href="5-vrb.html#SP13">§13</a><br/>Properties - <a href="5-prp.html#SP6_3">§6.3</a><br/>Relations - <a href="5-rlt.html#SP6_3">§6.3</a>, <a href="5-rlt.html#SP10_3">§10.3</a><br/>Kind Constructors - <a href="5-kc.html#SP11">§11</a><br/>Kind IDs - <a href="5-ki.html#SP9_2">§9.2</a><br/>Actions - <a href="5-act2.html#SP8_1">§8.1</a>, <a href="5-act2.html#SP8_3">§8.3</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP1">§1</a><br/>Command Grammars - <a href="7-cg.html#SP1">§1</a>, <a href="7-cg.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">int_interk</span><span class="plain-syntax">, </span><span class="identifier-syntax">INVALID_IANN</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">int_interk</span><span class="plain-syntax">, </span><span class="identifier-syntax">INVALID_IANN</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
|
|
@ -153,7 +153,7 @@ variables needed inside GPRs, which tend to be large, wrangly functions:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<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">§4.2</a><br/>Parse Name Properties - <a href="6-pnp.html#SP2">§2</a>, <a href="6-pnp.html#SP3">§3</a><br/>Command Grammars - <a href="7-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">§8</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">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">§4.2</a><br/>Parse Name Properties - <a href="6-pnp.html#SP2">§2</a>, <a href="6-pnp.html#SP3">§3</a><br/>Command Grammars - <a href="7-cg.html#SP5">§5</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">§8</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="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="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_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_len_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
@ -191,7 +191,7 @@ following convenience functions.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">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">§4.2</a><br/>Command Grammars - <a href="7-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">§8</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">§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="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">§4.2</a><br/>Command Grammars - <a href="7-cg.html#SP5">§5</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">§8</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">§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">-></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">-></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">-></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">-></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">-></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">-></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>
|
||||||
|
@ -203,14 +203,14 @@ following convenience functions.
|
||||||
<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">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="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">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="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">§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="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#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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">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">kit</span><span class="plain-syntax">-></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">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">-></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">kit</span><span class="plain-syntax">-></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="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="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">§4.2</a><br/>Command Grammars - <a href="7-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">§8</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">§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="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">§4.2</a><br/>Command Grammars - <a href="7-cg.html#SP5">§5</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP8">§8</a><br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">§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">-></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="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">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="plain-syntax">}</span>
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -79,7 +79,7 @@ function togglePopup(material_id) {
|
||||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::rudimentary_kinds</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::rudimentary_kinds</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><a href="3-gm.html#SP2" class="function-link"><span class="function-syntax">GenericModule::compile_basic_constants</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="3-gm.html#SP2" class="function-link"><span class="function-syntax">GenericModule::compile_basic_constants</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><a href="5-cnj.html#SP1" class="function-link"><span class="function-syntax">RTVerbs::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="5-cnj.html#SP1" class="function-link"><span class="function-syntax">RTVerbs::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><a href="6-tp.html#SP1" class="function-link"><span class="function-syntax">RTPlayer::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="6-tp.html#SP1" class="function-link"><span class="function-syntax">RTPlayer::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><a href="5-rlt.html#SP1" class="function-link"><span class="function-syntax">RTRelations::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="5-rlt.html#SP1" class="function-link"><span class="function-syntax">RTRelations::compile_generic_constants</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
|
@ -111,7 +111,7 @@ package already supplied:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">RTProperties::package</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">RTProperties::package</span></span>:<br/><a href="5-prp.html#SP6">§6</a><br/>Command Grammars - <a href="7-cg.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">RTProperties::package</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">RTProperties::package</span></span>:<br/><a href="5-prp.html#SP6">§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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find package 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">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 package 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">)) && (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></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">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">)) && (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></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::package</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>
|
<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::package</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>
|
||||||
|
|
|
@ -147,7 +147,7 @@ all of the work is delegated:
|
||||||
<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><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">gpr_kit</span><span class="plain-syntax"> </span><span class="identifier-syntax">kit</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">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><a href="6-np.html#SP3" class="function-link"><span class="function-syntax">Name::get_parse_name_fn_iname</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="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><a href="6-np.html#SP3" class="function-link"><span class="function-syntax">Name::get_parse_name_fn_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><a href="6-pnp.html#SP4" class="function-link"><span class="function-syntax">ParseName::compile_head</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">kit</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="6-pnp.html#SP4" class="function-link"><span class="function-syntax">ParseName::compile_head</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">kit</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</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">(&</span><span class="identifier-syntax">kit</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-cg.html#SP8" class="function-link"><span class="function-syntax">RTCommandGrammars::cg_compile_parse_name_lines</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">kit</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="6-pnp.html#SP6" class="function-link"><span class="function-syntax">ParseName::compile_tail</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">kit</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="6-pnp.html#SP6" class="function-link"><span class="function-syntax">ParseName::compile_tail</span></a><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">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="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>
|
||||||
|
@ -1213,7 +1213,6 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
||||||
<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><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><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><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">if</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="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">compilation_data</span><span class="plain-syntax">.</span><span class="identifier-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">"no PRN iname"</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-pnp.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Begin a PVP test</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-pnp.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Begin a PVP test</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_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#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||||
|
@ -1222,7 +1221,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::test_if_iname_has_property</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="constant-syntax">SELF_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP8" class="function-link"><span class="function-syntax">EmitCode::test_if_iname_has_property</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="constant-syntax">SELF_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EQ_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#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#SP13" class="function-link"><span class="function-syntax">EmitCode::call</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></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="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::call</span></a><span class="plain-syntax">(</span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::get_property_GPR_fn_iname</span></a><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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</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::up</span></a><span class="plain-syntax">();</span>
|
<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><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><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||||
|
|
|
@ -72,58 +72,140 @@ function togglePopup(material_id) {
|
||||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">runtime</a></li><li><a href="index.html#7">Chapter 7: Command Grammar</a></li><li><b>Command Grammars</b></li></ul></div>
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">runtime</a></li><li><a href="index.html#7">Chapter 7: Command Grammar</a></li><li><b>Command Grammars</b></li></ul></div>
|
||||||
<p class="purpose">Runtime support for CGs.</p>
|
<p class="purpose">Runtime support for CGs.</p>
|
||||||
|
|
||||||
<ul class="toc"><li><a href="7-cg.html#SP2">§2. Phases III and IV: Sort and Compile Grammar</a></li></ul><hr class="tocbar">
|
<ul class="toc"><li><a href="7-cg.html#SP1">§1. Generic constants</a></li><li><a href="7-cg.html#SP2">§2. Compilation data</a></li><li><a href="7-cg.html#SP4">§4. Phases III and IV: Sort and Compile Grammar</a></li></ul><hr class="tocbar">
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Generic constants. </b></p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::compile_generic_constants</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">RTCommandGrammars::compile_generic_constants</span></span>:<br/>Generic Module - <a href="3-gm.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_REVERSE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_SLASH_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_DIVIDER_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_RESULT_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_SPECIAL_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_NUMBER_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_NOUN_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">5</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_MULTI_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_MULTIINSIDE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">7</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_MULTIHELD_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_HELD_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">9</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_CREATURE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">10</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_TOPIC_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">11</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_MULTIEXCEPT_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">12</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">RTCommandGrammars::iname_for_I6_parser_token</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">RTCommandGrammars::iname_for_I6_parser_token</span></span>:<br/>Command Grammar Lines - <a href="7-cgl.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">cg_token</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">-></span><span class="identifier-syntax">grammar_token_code</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOUN_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><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">VERB_DIRECTIVE_NOUN_HL</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTI_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><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">VERB_DIRECTIVE_MULTI_HL</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">MULTIINSIDE_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</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">VERB_DIRECTIVE_MULTIINSIDE_HL</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">MULTIHELD_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</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">VERB_DIRECTIVE_MULTIHELD_HL</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">HELD_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</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">VERB_DIRECTIVE_HELD_HL</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">CREATURE_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</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">VERB_DIRECTIVE_CREATURE_HL</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TOPIC_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><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">VERB_DIRECTIVE_TOPIC_HL</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">MULTIEXCEPT_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</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">VERB_DIRECTIVE_MULTIEXCEPT_HL</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find inter name for invalid GTC"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> to prevent a compiler error: never reached</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTCommandGrammars::grammar_constant</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="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="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-hrr.html#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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Compilation data. </b>Each <span class="extract"><span class="extract-syntax">command_grammar</span></span> object contains this data:
|
||||||
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">cg_compilation_data</span><span class="plain-syntax"> {</span>
|
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">cg_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">cg_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">cg_token_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">CG_IS_TOKEN</span></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">cg_token_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">CG_IS_TOKEN</span></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">cg_parse_name_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">CG_IS_VALUE</span></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">cg_prn_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> CG_IS_PROPERTY_NAME</span><span class="extract"><span class="extract-syntax">: the relevant GPR is called this</span></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">property_GPR_fn_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> CG_IS_PROPERTY_NAME</span><span class="extract"></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">cg_consult_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> for the consult parsing routine if needed</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CG_IS_TOKEN_identifier</span><span class="plain-syntax">; </span><span class="comment-syntax"> CG_IS_PROPERTY_NAME</span><span class="extract"></span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg_I6_identifier</span><span class="plain-syntax">; </span><span class="comment-syntax"> when a token is delegated to an I6 routine</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">consult_fn_iname</span><span class="plain-syntax">; </span><span class="comment-syntax"> CG_IS_CONSULT</span><span class="extract"></span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">cg_compilation_data</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">cg_compilation_data</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">cg_compilation_data</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::new_compilation_data</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">cg_compilation_data</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::new_compilation_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">cg_compilation_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">cgcd</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">cg_compilation_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">cgcd</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cgcd</span><span class="plain-syntax">.</span><span class="element-syntax">cg_parse_name_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">cgcd</span><span class="plain-syntax">.</span><span class="element-syntax">cg_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">cgcd</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">cgcd</span><span class="plain-syntax">.</span><span class="element-syntax">consult_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">cgcd</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="plain-syntax"> </span><span class="identifier-syntax">cgcd</span><span class="plain-syntax">.</span><span class="element-syntax">property_GPR_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">cgcd</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="plain-syntax"> </span><span class="identifier-syntax">cgcd</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="plain-syntax"> </span><span class="identifier-syntax">cgcd</span><span class="plain-syntax">.</span><span class="element-syntax">cg_I6_identifier</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cgcd</span><span class="plain-syntax">.</span><span class="element-syntax">CG_IS_TOKEN_identifier</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</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">cgcd</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">cgcd</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTCommandGrammars::i6_token_as_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">RTCommandGrammars::i6_token_as_iname</span></span>:<br/>Command Grammar Lines - <a href="7-cgl.html#SP10">§10</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="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">RTCommandGrammars::package</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammars::package</span></span>:<br/><a href="7-cg.html#SP3">§3</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_I6_identifier</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">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_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="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">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_I6_identifier</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_package</span><span 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">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">"no token GPR"</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">COMMAND_GRAMMARS_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">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_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">RTCommandGrammars::get_property_GPR_fn_iname</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">RTCommandGrammars::get_property_GPR_fn_iname</span></span>:<br/><a href="7-cg.html#SP5">§5</a><br/>Parse Name Properties - <a href="6-pnp.html#SP10">§10</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="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CG_IS_PROPERTY_NAME</span><span class="plain-syntax">))</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"prn_iname unavailable"</span><span 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">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">property_GPR_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">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">property_GPR_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">PROPERTY_GPR_FN_HL</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::package</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">property_GPR_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">RTCommandGrammars::get_cg_token_iname</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::get_cg_token_iname</span></span>:<br/><a href="7-cg.html#SP5">§5</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP10">§10</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="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CG_IS_TOKEN</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">"cg_token_iname unavailable"</span><span 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">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="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">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">CG_IS_TOKEN_identifier</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">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">cg_token_iname</span><span class="plain-syntax"> =</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="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">CG_IS_TOKEN_identifier</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="identifier-syntax">cg_token_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_LINE_FN_HL</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::package</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="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="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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></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>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::new_CG_IS_PROPERTY_NAME</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">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></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="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">EITHER_OR_GPR_FN_HL</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::package</span></a><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">RTCommandGrammars::new_CG_IS_TOKEN</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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">NAMED_TOKENS_HAP</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_token_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">PARSE_LINE_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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::set_CG_IS_TOKEN_identifier</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::set_CG_IS_TOKEN_identifier</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">cg_I6_identifier</span><span class="plain-syntax">, </span><span class="string-syntax">"%N"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"too late to translate"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">CG_IS_TOKEN_identifier</span><span class="plain-syntax">, </span><span class="string-syntax">"%N"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<ul class="endnotetexts"><li>The structure cg_compilation_data is private to this section.</li></ul>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </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::get_consult_fn_iname</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">RTCommandGrammars::get_consult_fn_iname</span></span>:<br/><a href="7-cg.html#SP5">§5</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="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CG_IS_CONSULT</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">"cg_token_iname unavailable"</span><span 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">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">consult_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">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">consult_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">CONSULT_FN_HL</span><span class="plain-syntax">, </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::package</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">consult_fn_iname</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::create_no_verb_verb</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::create_no_verb_verb</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">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">NO_VERB_VERB_DEFINED_HL</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><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">NO_VERB_VERB_DEFINED_HL</span><span class="plain-syntax">), (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
||||||
<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><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>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure cg_compilation_data is accessed in 6/pnp and here.</li></ul>
|
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Phases III and IV: Sort and Compile Grammar. </b>At this highest level phases III and IV are intermingled, in that Phase III
|
||||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§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
|
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
|
goes through both Phase III and IV before the next begins Phase III. So it
|
||||||
would not be appropriate to print banners like "Phase III begins here"
|
would not be appropriate to print banners like "Phase III begins here"
|
||||||
|
@ -146,91 +228,173 @@ in the final I6 output.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_REVERSE_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_SLASH_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_DIVIDER_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_RESULT_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_SPECIAL_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_NUMBER_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_NOUN_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_MULTI_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_MULTIINSIDE_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_MULTIHELD_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_HELD_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_CREATURE_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_TOPIC_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VERB_DIRECTIVE_MULTIEXCEPT_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::compile_generic_constants</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">RTCommandGrammars::compile_generic_constants</span></span>:<br/>Generic Module - <a href="3-gm.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_REVERSE_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_REVERSE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_SLASH_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_SLASH_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_DIVIDER_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_DIVIDER_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_RESULT_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_RESULT_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_SPECIAL_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_SPECIAL_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_NUMBER_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_NUMBER_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_NOUN_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_NOUN_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">5</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_MULTI_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_MULTI_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_MULTIINSIDE_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_MULTIINSIDE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">7</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_MULTIHELD_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_MULTIHELD_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_HELD_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_HELD_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">9</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_CREATURE_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_CREATURE_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">10</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_TOPIC_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_TOPIC_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">11</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_MULTIEXCEPT_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::grammar_constant</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERB_DIRECTIVE_MULTIEXCEPT_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">12</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">RTCommandGrammars::iname_for_I6_parser_token</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammars::iname_for_I6_parser_token</span></span>:<br/>Command Grammar Lines - <a href="7-cgl.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">cg_token</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">-></span><span class="identifier-syntax">grammar_token_code</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOUN_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_NOUN_iname</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTI_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_MULTI_iname</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTIINSIDE_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_MULTIINSIDE_iname</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTIHELD_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_MULTIHELD_iname</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">HELD_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_HELD_iname</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CREATURE_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_CREATURE_iname</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TOPIC_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_TOPIC_iname</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MULTIEXCEPT_TOKEN_GTC:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">VERB_DIRECTIVE_MULTIEXCEPT_iname</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to find inter name for invalid GTC"</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> }</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> to prevent a gcc error: never reached</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
|
||||||
|
|
||||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTCommandGrammars::grammar_constant</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">) {</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="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="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-hrr.html#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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::compile_all</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::compile_all</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">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">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">CommandGrammars::prepare</span><span class="plain-syntax">();</span>
|
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Log::new_stage</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Sorting and compiling non-value grammar (G3, G4)"</span><span class="plain-syntax">);</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_TOKEN</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> makes GPRs for designed tokens</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="string-syntax">"command grammar for token"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Sequence::queue</span><span class="plain-syntax">(&</span><a href="7-cg.html#SP5" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">), </span><span class="identifier-syntax">desc</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_COMMAND</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_COMMAND</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> makes </span><span class="extract"><span class="extract-syntax">Verb</span></span><span class="comment-syntax"> directives</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="string-syntax">"command grammar for command '%W'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">command</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Sequence::queue</span><span class="plain-syntax">(&</span><a href="7-cg.html#SP5" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">), </span><span class="identifier-syntax">desc</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_SUBJECT</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_SUBJECT</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> makes routines for use in </span><span class="extract"><span class="extract-syntax">parse_name</span></span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="string-syntax">"command grammar for parse_name on '%W'"</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">InferenceSubjects::get_name_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">subj_understood</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Sequence::queue</span><span class="plain-syntax">(&</span><a href="7-cg.html#SP5" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">), </span><span class="identifier-syntax">desc</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_CONSULT</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_CONSULT</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> routines to parse snippets, used as values</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="string-syntax">"command grammar for consult at '%W'"</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_cg_created</span><span class="plain-syntax">));</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Sequence::queue</span><span class="plain-syntax">(&</span><a href="7-cg.html#SP5" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">), </span><span class="identifier-syntax">desc</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_PROPERTY_NAME</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CG_IS_PROPERTY_NAME</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> makes routines for use in </span><span class="extract"><span class="extract-syntax">parse_name</span></span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="string-syntax">"command grammar for property '%W'"</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cgl.html#SP8" class="function-link"><span class="function-syntax">RTCommandGrammarLines::compile_slash_gprs</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">prn_understood</span><span class="plain-syntax">-></span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Sequence::queue</span><span class="plain-syntax">(&</span><a href="7-cg.html#SP5" class="function-link"><span class="function-syntax">RTCommandGrammars::compile</span></a><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">), </span><span class="identifier-syntax">desc</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>Some tokens require suitable I6 routines to have already been compiled,
|
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>The following function unites, so far as possible, the different forms of
|
||||||
|
CG by compiling each of them as a sandwich: top slice, filling, bottom slice.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary">The interesting case is of a CG representing names for an object: the
|
||||||
|
name-behaviour needs to be inherited from the object's kind, and so on up
|
||||||
|
the kinds hierarchy, but this is a case where I7's kind hierarchy does not
|
||||||
|
agree with I6's class hierarchy. I6 has no (nice) way to inherit <span class="extract"><span class="extract-syntax">parse_name</span></span>
|
||||||
|
behaviour from a class to an instance. So we will simply pile up extra
|
||||||
|
fillings into the sandwich. The order of these is important: by getting
|
||||||
|
in first, grammar for the instance takes priority; its immediate kind has
|
||||||
|
next priority, and so on up the hierarchy.
|
||||||
|
</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::compile</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">RTCommandGrammars::compile</span></span>:<br/><a href="7-cg.html#SP4">§4</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">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">-></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">CGLines::list_length</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">GRAMMAR</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling command grammar $G\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_cg_created</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="plain-syntax"> </span><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">-></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::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#SP7" 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#SP9" 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>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ea.html#SP6" class="function-link"><span class="function-syntax">EmitArrays::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="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="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#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::get_cg_token_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="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&</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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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#SP12" 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>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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>
|
||||||
|
<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><a href="2-ec.html#SP13" 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#SP12" 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">rv_s</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</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::up</span></a><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::cg_compile_lines</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
||||||
|
<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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</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::up</span></a><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">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="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#SP3" class="function-link"><span class="function-syntax">RTCommandGrammars::get_consult_fn_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="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_range_vars</span></a><span class="plain-syntax">(&</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">(&</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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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#SP12" 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>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">range_from_s</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::up</span></a><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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#SP12" 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>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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>
|
||||||
|
<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><a href="2-ec.html#SP13" 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#SP12" 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">rv_s</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</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::up</span></a><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::cg_compile_lines</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
||||||
|
<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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</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::up</span></a><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">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="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_VALUE:</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">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="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#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::get_property_GPR_fn_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="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&</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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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#SP12" 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>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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>
|
||||||
|
<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><a href="2-ec.html#SP13" 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#SP12" 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">rv_s</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</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::up</span></a><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::cg_compile_lines</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
||||||
|
<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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</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::up</span></a><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">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>Some tokens require suitable I6 routines to have already been compiled,
|
||||||
if they are to work nicely: the following routine goes through the tokens
|
if they are to work nicely: the following routine goes through the tokens
|
||||||
by exploring each CG in turn.
|
by exploring each CG in turn.
|
||||||
</p>
|
</p>
|
||||||
|
@ -247,11 +411,11 @@ by exploring each CG in turn.
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>Command CGs are destined to be compiled into <span class="extract"><span class="extract-syntax">Verb</span></span> directives, as follows.
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Command CGs are destined to be compiled into <span class="extract"><span class="extract-syntax">Verb</span></span> directives, as follows.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::cg_compile_Verb_directive_header</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">RTCommandGrammars::cg_compile_Verb_directive_header</span></span>:<br/><a href="7-cg.html#SP7">§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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">array_iname</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::cg_compile_Verb_directive_header</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">RTCommandGrammars::cg_compile_Verb_directive_header</span></span>:<br/><a href="7-cg.html#SP5">§5</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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">array_iname</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CG_IS_COMMAND</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CG_IS_COMMAND</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to compile Verb from non-command 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">"tried to compile Verb from non-command CG"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CGLines::list_length</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</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">CGLines::list_length</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||||
|
@ -276,7 +440,7 @@ by exploring each CG in turn.
|
||||||
<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>
|
<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>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>The special thing about <span class="extract"><span class="extract-syntax">CG_IS_SUBJECT</span></span> grammars is that each is attached
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>The special thing about <span class="extract"><span class="extract-syntax">CG_IS_SUBJECT</span></span> grammars is that each is attached
|
||||||
to an inference subject, and when we compile them we recurse up the subject
|
to an inference subject, and when we compile them we recurse up the subject
|
||||||
hierarchy: thus if the red ball is of kind ball which is of kind thing,
|
hierarchy: thus if the red ball is of kind ball which is of kind thing,
|
||||||
then the <span class="extract"><span class="extract-syntax">parse_name</span></span> for the red ball consists of grammar lines specified
|
then the <span class="extract"><span class="extract-syntax">parse_name</span></span> for the red ball consists of grammar lines specified
|
||||||
|
@ -285,14 +449,14 @@ specified for all things. (This mimics I6 class-to-instance inheritance.)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">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">§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="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('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">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">§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">-></span><span class="identifier-syntax">subj_understood</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">-></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">)-></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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">)-></span><span class="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">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><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">)-></span><span class="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP9" 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">)-></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="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="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>
|
||||||
|
@ -300,175 +464,36 @@ specified for all things. (This mimics I6 class-to-instance inheritance.)
|
||||||
<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">))</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="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PARSING_DATA_FOR_SUBJ</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)-></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><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">)-></span><span class="identifier-syntax">understand_as_this_subject</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP9" 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">)-></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>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>All other grammars are compiled just as they are:
|
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>All other grammars are compiled just as they are:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::cg_compile_lines</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">RTCommandGrammars::cg_compile_lines</span></span>:<br/><a href="7-cg.html#SP5">§5</a>, <a href="7-cg.html#SP7">§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_lines</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::cg_compile_lines</span></span>:<br/><a href="7-cg.html#SP5">§5</a>, <a href="7-cg.html#SP8">§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="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">CommandsIndex::list_assert_ownership</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> Mark for later indexing</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandsIndex::list_assert_ownership</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> Mark for later indexing</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandGrammars::sort_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> Phase III for the CGLs in the CG happens here</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandGrammars::sort_command_grammar</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">); </span><span class="comment-syntax"> Phase III for the CGLs in the CG happens here</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cgl.html#SP3" class="function-link"><span class="function-syntax">RTCommandGrammarLines::sorted_line_list_compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><a href="7-cgl.html#SP3" class="function-link"><span class="function-syntax">RTCommandGrammarLines::sorted_line_list_compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">CommandGrammars::cg_is_genuinely_verbal</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">)); </span><span class="comment-syntax"> And Phase IV here</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="identifier-syntax">CommandGrammars::cg_is_genuinely_verbal</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">)); </span><span class="comment-syntax"> And Phase IV here</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
|
||||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>The following function unites, so far as possible, the different forms of
|
|
||||||
CG by compiling each of them as a sandwich: top slice, filling, bottom slice.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="commentary">The interesting case is of a CG representing names for an object: the
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::compile_iv</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">RTCommandGrammars::compile_iv</span></span>:<br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">§1</a>, <a href="7-tpv.html#SP1_1">§1.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">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>
|
||||||
name-behaviour needs to be inherited from the object's kind, and so on up
|
|
||||||
the kinds hierarchy, but this is a case where I7's kind hierarchy does not
|
|
||||||
agree with I6's class hierarchy. I6 has no (nice) way to inherit <span class="extract"><span class="extract-syntax">parse_name</span></span>
|
|
||||||
behaviour from a class to an instance. So we will simply pile up extra
|
|
||||||
fillings into the sandwich. The order of these is important: by getting
|
|
||||||
in first, grammar for the instance takes priority; its immediate kind has
|
|
||||||
next priority, and so on up the hierarchy.
|
|
||||||
</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::compile</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">RTCommandGrammars::compile</span></span>:<br/><a href="7-cg.html#SP2">§2</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">CGLines::list_length</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">GRAMMAR</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling command grammar $G\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_cg_created</span><span class="plain-syntax">;</span>
|
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><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">-></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::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>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ea.html#SP6" class="function-link"><span class="function-syntax">EmitArrays::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="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="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">-></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">-></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="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&</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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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#SP12" 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>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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>
|
|
||||||
<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><a href="2-ec.html#SP13" 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#SP12" 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">rv_s</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</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::up</span></a><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">cg</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
|
||||||
<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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</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::up</span></a><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">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="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="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_range_vars</span></a><span class="plain-syntax">(&</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">(&</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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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#SP12" 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>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">range_from_s</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::up</span></a><span class="plain-syntax">();</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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#SP12" 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>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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>
|
|
||||||
<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><a href="2-ec.html#SP13" 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#SP12" 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">rv_s</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</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::up</span></a><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">cg</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
|
||||||
<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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</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::up</span></a><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">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="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_VALUE:</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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="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">-></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">-></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="2-gpr.html#SP4" class="function-link"><span class="function-syntax">GPRs::add_original_var</span></a><span class="plain-syntax">(&</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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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#SP12" 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>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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>
|
|
||||||
<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><a href="2-ec.html#SP13" 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#SP12" 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">rv_s</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</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::up</span></a><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">cg</span><span class="plain-syntax">);</span>
|
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
|
||||||
<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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</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::up</span></a><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">break</span><span class="plain-syntax">;</span>
|
|
||||||
<span class="plain-syntax"> }</span>
|
|
||||||
<span class="plain-syntax"> }</span>
|
|
||||||
<span class="plain-syntax">}</span>
|
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::compile_iv</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">RTCommandGrammars::compile_iv</span></span>:<br/>Tokens Parsing Values - <a href="7-tpv.html#SP1">§1</a>, <a href="7-tpv.html#SP1_1">§1.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">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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CGLines::list_length</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</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">CGLines::list_length</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">GRAMMAR</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling command grammar $G\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">GRAMMAR</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling command grammar $G\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_cg_created</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_cg_created</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><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><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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CG_IS_VALUE</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"not iv"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">-></span><span class="identifier-syntax">cg_is</span><span class="plain-syntax"> != </span><span class="identifier-syntax">CG_IS_VALUE</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"not iv"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="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">cg</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::cg_compile_lines</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::emit_determination_type</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammars::emit_determination_type</span></span>:<br/>Command Grammar Lines - <a href="7-cgl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammars::emit_determination_type</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">RTCommandGrammars::emit_determination_type</span></span>:<br/>Command Grammar Lines - <a href="7-cgl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">determination_type</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gty</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CompileValues::to_code_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">gty</span><span class="plain-syntax">-></span><span class="identifier-syntax">term</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">what</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">CompileValues::to_code_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">gty</span><span class="plain-syntax">-></span><span class="identifier-syntax">term</span><span class="plain-syntax">[0].</span><span class="identifier-syntax">what</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§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">§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">-></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">-></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">-></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">-></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">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="6-abp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-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">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">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="6-abp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-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">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">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
|
@ -123,7 +123,7 @@ the mistake.
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::cgl_compile_mistake_token_as_needed</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_mistake_token_as_needed</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::cgl_compile_mistake_token_as_needed</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_mistake_token_as_needed</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistaken</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistaken</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">mistake_iname</span><span class="plain-syntax">);</span>
|
<span class="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">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">mistake_iname</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
|
@ -172,7 +172,7 @@ the mistake.
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::cgl_compile_result_of_mistake</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_result_of_mistake</span></span>:<br/><a href="7-cgl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::cgl_compile_result_of_mistake</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_result_of_mistake</span></span>:<br/><a href="7-cgl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistaken</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">mistaken</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">MistakeAction_iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no MistakeAction yet"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">MistakeAction_iname</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no MistakeAction yet"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_RESULT_iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><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">VERB_DIRECTIVE_RESULT_HL</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::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">MistakeAction_iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">MistakeAction_iname</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
@ -238,7 +238,7 @@ the mistake.
|
||||||
<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">MistakeAction_iname</span><span class="plain-syntax">);</span>
|
<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">MistakeAction_iname</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::cgl_compile_condition_token_as_needed</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_condition_token_as_needed</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::cgl_compile_condition_token_as_needed</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_condition_token_as_needed</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">cg_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CGLines::conditional</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CGLines::conditional</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">)) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_grammar_specified</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">where_grammar_specified</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ of the <span class="extract"><span class="extract-syntax">name</span></span> pro
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::sorted_line_list_compile</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::sorted_line_list_compile</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">,</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::sorted_line_list_compile</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::sorted_line_list_compile</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">gpr_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">genuinely_verbal</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">, </span><span class="identifier-syntax">command_grammar</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">genuinely_verbal</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_INDENT</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_INDENT</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_SORTED_CG_LINES</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">)</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_SORTED_CG_LINES</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">)</span>
|
||||||
|
@ -342,7 +342,7 @@ purely cosmetic effect.
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_label</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_label</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">GV_IS_VALUE_instance_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">GV_IS_VALUE_instance_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::reset_labels</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::reset_labels</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::reset_labels</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">RTCommandGrammarLines::reset_labels</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP5">§5</a>, <a href="7-cg.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_label</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_label</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
@ -384,7 +384,7 @@ command CGs) have not yet been type-checked, whereas all others have.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token_values</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">token_values</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><2; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><2; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">code_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_DIVIDER_iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">code_mode</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><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">VERB_DIRECTIVE_DIVIDER_HL</span><span class="plain-syntax">));</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fail_label</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fail_label</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
@ -416,7 +416,7 @@ command CGs) have not yet been type-checked, whereas all others have.
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EQ_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#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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">instance_s</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">instance_s</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::emit_determination_type</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">cgl_type</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::emit_determination_type</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">cgl_type</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><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><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><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><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#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||||
|
@ -429,7 +429,7 @@ command CGs) have not yet been type-checked, whereas all others have.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg_is</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_COMMAND:</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CG_IS_COMMAND:</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="7-cgl.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_result_of_mistake</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="7-cgl.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammarLines::cgl_compile_result_of_mistake</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_RESULT_iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><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">VERB_DIRECTIVE_RESULT_HL</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::iname_entry</span></a><span class="plain-syntax">(</span><a href="5-act2.html#SP6" class="function-link"><span class="function-syntax">RTActions::double_sharp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">resulting_action</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><a href="5-act2.html#SP6" class="function-link"><span class="function-syntax">RTActions::double_sharp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">resulting_action</span><span class="plain-syntax">));</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">reversed</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">reversed</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -443,7 +443,7 @@ command CGs) have not yet been type-checked, whereas all others have.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">swap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[0];</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">swap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[0];</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[1];</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[1];</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">swap</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">token_value_kinds</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">swap</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_REVERSE_iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><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">VERB_DIRECTIVE_REVERSE_HL</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ActionSemantics::check_valid_application</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">resulting_action</span><span class="plain-syntax">, </span><span class="identifier-syntax">token_values</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">ActionSemantics::check_valid_application</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">resulting_action</span><span class="plain-syntax">, </span><span class="identifier-syntax">token_values</span><span class="plain-syntax">,</span>
|
||||||
|
@ -515,7 +515,7 @@ command CGs) have not yet been type-checked, whereas all others have.
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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#SP13" 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#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#SP12" 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">PARSED_NUMBER_HL</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::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">PARSED_NUMBER_HL</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::emit_determination_type</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">cgl_type</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::emit_determination_type</span></a><span class="plain-syntax">(&(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">-></span><span class="identifier-syntax">cgl_type</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><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><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><a href="2-ec.html#SP13" 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>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
||||||
<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#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||||
|
@ -642,6 +642,10 @@ command CGs) have not yet been type-checked, whereas all others have.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">sgpr_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SLASH_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">sgpr_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SLASH_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">sgpr_iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">sgpr_iname</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">last_token_in_lexeme</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">last_token_in_lexeme</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="string-syntax">"slash GPR %d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Sequence::queue</span><span class="plain-syntax">(&</span><a href="7-cgl.html#SP8" class="function-link"><span class="function-syntax">RTCommandGrammarLines::slash_GPR_agent</span></a><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_slash_gpr</span><span class="plain-syntax">(</span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">), </span><span class="identifier-syntax">desc</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">grammar_token_kind</span><span class="plain-syntax"> =</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">grammar_token_kind</span><span class="plain-syntax"> =</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cgl.html#SP10" class="function-link"><span class="function-syntax">RTCommandGrammarLines::compile_token</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgt</span><span class="plain-syntax">, </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">, </span><span class="identifier-syntax">jump_on_fail</span><span class="plain-syntax">, </span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="7-cgl.html#SP10" class="function-link"><span class="function-syntax">RTCommandGrammarLines::compile_token</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgt</span><span class="plain-syntax">, </span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">, </span><span class="identifier-syntax">jump_on_fail</span><span class="plain-syntax">, </span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax">);</span>
|
||||||
|
@ -678,7 +682,8 @@ command CGs) have not yet been type-checked, whereas all others have.
|
||||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-cgl.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Jump to end of group</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-cgl.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Jump to end of group</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last_token_in_lexeme</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VERB_DIRECTIVE_SLASH_iname</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last_token_in_lexeme</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><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">VERB_DIRECTIVE_SLASH_HL</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
|
|
||||||
|
@ -706,21 +711,19 @@ command CGs) have not yet been type-checked, whereas all others have.
|
||||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::compile_slash_gprs</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">RTCommandGrammarLines::compile_slash_gprs</span></span>:<br/>Command Grammars - <a href="7-cg.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTCommandGrammarLines::slash_GPR_agent</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">RTCommandGrammarLines::slash_GPR_agent</span></span>:<br/><a href="7-cgl.html#SP7">§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="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="reserved-syntax">slash_gpr</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sgpr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_slash_gpr</span><span class="plain-syntax">(</span><span class="identifier-syntax">t</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">-></span><span class="element-syntax">sgpr_iname</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">-></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="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">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">(&</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">(&</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">(&</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">(&</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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">first_choice</span><span class="plain-syntax">, </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">last_choice</span><span class="plain-syntax">, </span><span class="identifier-syntax">CG_IS_TOKEN</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">.</span><span class="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="7-cgl.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammarLines::compile_token_line</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">first_choice</span><span class="plain-syntax">, </span><span class="identifier-syntax">sgpr</span><span class="plain-syntax">-></span><span class="element-syntax">last_choice</span><span class="plain-syntax">, </span><span class="identifier-syntax">CG_IS_TOKEN</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">gprk</span><span class="plain-syntax">.</span><span class="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#SP13" 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>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
||||||
<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#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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_PREPOSITION_HL</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::up</span></a><span class="plain-syntax">();</span>
|
<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="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="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="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>This function looks through a CGL list and marks to suppress all those
|
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>This function looks through a CGL list and marks to suppress all those
|
||||||
|
@ -1399,7 +1402,7 @@ nothing else.
|
||||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CGTokens::is_I6_parser_token</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CGTokens::is_I6_parser_token</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</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">i6_token_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::iname_for_I6_parser_token</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</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">i6_token_iname</span><span class="plain-syntax"> = </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::iname_for_I6_parser_token</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Descriptions::explicit_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">-></span><span class="identifier-syntax">what_token_describes</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Descriptions::explicit_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">-></span><span class="identifier-syntax">what_token_describes</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">code_mode</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">CGTokens::is_topic</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">))) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">consult_mode</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">CGTokens::is_topic</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgt</span><span class="plain-syntax">))) {</span>
|
||||||
|
@ -1543,7 +1546,7 @@ nothing else.
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::call</span></a><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">PARSETOKENSTOPPED_HL</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::call</span></a><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">PARSETOKENSTOPPED_HL</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#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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_TT_HL</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_TT_HL</span><span class="plain-syntax">));</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::i6_token_as_iname</span></a><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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::get_cg_token_iname</span></a><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#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
<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><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><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><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
|
||||||
|
@ -1573,7 +1576,7 @@ nothing else.
|
||||||
<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><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><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><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">else</span><span class="plain-syntax"> {</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><a href="7-cg.html#SP1" class="function-link"><span class="function-syntax">RTCommandGrammars::i6_token_as_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cg</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::iname_entry</span></a><span class="plain-syntax">(</span><a href="7-cg.html#SP2" class="function-link"><span class="function-syntax">RTCommandGrammars::get_cg_token_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="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CommandGrammars::get_kind_matched</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">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CommandGrammars::get_kind_matched</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">else</span>
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span>
|
||||||
|
|
|
@ -83,7 +83,7 @@ function togglePopup(material_id) {
|
||||||
<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">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">(&</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">(&</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="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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_iv</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
||||||
<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#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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</span><span class="plain-syntax">));</span>
|
||||||
|
@ -100,7 +100,7 @@ function togglePopup(material_id) {
|
||||||
<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="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="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>
|
<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>
|
||||||
<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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_iv</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
||||||
<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#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||||
|
@ -116,7 +116,7 @@ function togglePopup(material_id) {
|
||||||
<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">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">(&</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">(&</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="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">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax">) </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_iv</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" 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>
|
||||||
<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#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#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</span><span class="plain-syntax">));</span>
|
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_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">GPR_FAIL_HL</span><span class="plain-syntax">));</span>
|
||||||
|
@ -231,7 +231,7 @@ function togglePopup(material_id) {
|
||||||
|
|
||||||
<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>
|
<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>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cg</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><a href="7-cg.html#SP7" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_iv</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="7-cg.html#SP9" class="function-link"><span class="function-syntax">RTCommandGrammars::compile_iv</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">gprk</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tpv.html#SP1_1_2" class="named-paragraph-link"><span class="named-paragraph">Reset word number</span><span class="named-paragraph-number">1.1.2</span></a></span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tpv.html#SP1_1_2" class="named-paragraph-link"><span class="named-paragraph">Reset word number</span><span class="named-paragraph-number">1.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">longest</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">longest</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
Total memory consumption was 303822K = 297 MB
|
Total memory consumption was 303908K = 297 MB
|
||||||
|
|
||||||
63.7% was used for 1504444 objects, in 320547 frames in 242 x 800K = 193600K = 189 MB:
|
63.7% was used for 1504665 objects, in 320669 frames in 242 x 800K = 193600K = 189 MB:
|
||||||
|
|
||||||
9.5% inter_tree_node_array 41 x 8192 = 335872 objects, 29558048 bytes
|
9.4% inter_tree_node_array 41 x 8192 = 335872 objects, 29558048 bytes
|
||||||
6.1% text_stream_array 3387 x 100 = 338700 objects, 19075584 bytes
|
6.1% text_stream_array 3388 x 100 = 338800 objects, 19081216 bytes
|
||||||
5.2% linked_list 29346 objects, 16433760 bytes
|
5.2% linked_list 29346 objects, 16433760 bytes
|
||||||
3.3% parse_node 129374 objects, 10349920 bytes
|
3.3% parse_node 129374 objects, 10349920 bytes
|
||||||
2.8% inter_symbol_array 89 x 1024 = 91136 objects, 8751904 bytes
|
2.8% inter_symbol_array 89 x 1024 = 91136 objects, 8751904 bytes
|
||||||
|
@ -17,16 +17,16 @@ Total memory consumption was 303822K = 297 MB
|
||||||
0.4% inter_name_array 32 x 1000 = 32000 objects, 1537024 bytes
|
0.4% inter_name_array 32 x 1000 = 32000 objects, 1537024 bytes
|
||||||
0.4% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
|
0.4% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
|
||||||
0.4% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes
|
0.4% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes
|
||||||
0.3% inter_package 15429 objects, 1110888 bytes
|
0.3% inter_package 15427 objects, 1110744 bytes
|
||||||
0.3% id_body 940 objects, 1075360 bytes
|
0.3% id_body 940 objects, 1075360 bytes
|
||||||
0.3% inter_name_generator_array 26 x 1000 = 26000 objects, 1040832 bytes
|
0.3% inter_name_generator_array 26 x 1000 = 26000 objects, 1040832 bytes
|
||||||
0.3% adjective_meaning 202 objects, 1000304 bytes
|
0.3% adjective_meaning 202 objects, 1000304 bytes
|
||||||
0.3% inter_symbols_table 15429 objects, 987456 bytes
|
0.3% inter_symbols_table 15427 objects, 987328 bytes
|
||||||
0.3% dictionary 20442 objects, 981216 bytes
|
0.3% dictionary 20439 objects, 981072 bytes
|
||||||
0.3% excerpt_meaning 3098 objects, 966576 bytes
|
0.3% excerpt_meaning 3098 objects, 966576 bytes
|
||||||
0.2% dict_entry_array 281 x 100 = 28100 objects, 908192 bytes
|
0.2% dict_entry_array 281 x 100 = 28100 objects, 908192 bytes
|
||||||
0.2% production 3871 objects, 898072 bytes
|
0.2% production 3871 objects, 898072 bytes
|
||||||
0.2% package_request 10003 objects, 880264 bytes
|
0.2% package_request 10001 objects, 880088 bytes
|
||||||
0.2% ptoken 8379 objects, 871416 bytes
|
0.2% ptoken 8379 objects, 871416 bytes
|
||||||
0.2% grammatical_usage 3610 objects, 866400 bytes
|
0.2% grammatical_usage 3610 objects, 866400 bytes
|
||||||
0.2% individual_form 2560 objects, 860160 bytes
|
0.2% individual_form 2560 objects, 860160 bytes
|
||||||
|
@ -39,7 +39,7 @@ Total memory consumption was 303822K = 297 MB
|
||||||
0.1% verb_form 386 objects, 345856 bytes
|
0.1% verb_form 386 objects, 345856 bytes
|
||||||
---- noun 2379 objects, 285480 bytes
|
---- noun 2379 objects, 285480 bytes
|
||||||
---- inference_subject 665 objects, 260680 bytes
|
---- inference_subject 665 objects, 260680 bytes
|
||||||
---- compilation_subtask 2773 objects, 221840 bytes
|
---- compilation_subtask 2903 objects, 232240 bytes
|
||||||
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
|
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
|
||||||
---- binary_predicate 321 objects, 169488 bytes
|
---- binary_predicate 321 objects, 169488 bytes
|
||||||
---- linguistic_stock_item 3315 objects, 159120 bytes
|
---- linguistic_stock_item 3315 objects, 159120 bytes
|
||||||
|
@ -54,7 +54,7 @@ Total memory consumption was 303822K = 297 MB
|
||||||
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
|
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
|
||||||
---- noun_usage 2401 objects, 96040 bytes
|
---- noun_usage 2401 objects, 96040 bytes
|
||||||
---- preposition 273 objects, 87360 bytes
|
---- preposition 273 objects, 87360 bytes
|
||||||
---- inter_tree 6 objects, 84528 bytes
|
---- inter_tree 6 objects, 84480 bytes
|
||||||
---- lexical_cluster 2516 objects, 80512 bytes
|
---- lexical_cluster 2516 objects, 80512 bytes
|
||||||
---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes
|
---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes
|
||||||
---- kind_variable_declaration 1652 objects, 79296 bytes
|
---- kind_variable_declaration 1652 objects, 79296 bytes
|
||||||
|
@ -110,7 +110,7 @@ Total memory consumption was 303822K = 297 MB
|
||||||
---- booking_list 407 objects, 13024 bytes
|
---- booking_list 407 objects, 13024 bytes
|
||||||
---- adjective_iname_holder 320 objects, 12800 bytes
|
---- adjective_iname_holder 320 objects, 12800 bytes
|
||||||
---- pathname 292 objects, 11680 bytes
|
---- pathname 292 objects, 11680 bytes
|
||||||
---- stopwatch_timer 109 objects, 8720 bytes
|
---- stopwatch_timer 110 objects, 8800 bytes
|
||||||
---- filename 208 objects, 8320 bytes
|
---- filename 208 objects, 8320 bytes
|
||||||
---- uniqueness_count 328 objects, 7872 bytes
|
---- uniqueness_count 328 objects, 7872 bytes
|
||||||
---- equation_node 68 objects, 7616 bytes
|
---- equation_node 68 objects, 7616 bytes
|
||||||
|
@ -119,7 +119,7 @@ Total memory consumption was 303822K = 297 MB
|
||||||
---- determiner 22 objects, 7216 bytes
|
---- determiner 22 objects, 7216 bytes
|
||||||
---- verb 108 objects, 6048 bytes
|
---- verb 108 objects, 6048 bytes
|
||||||
---- text_literal_holder 144 objects, 5760 bytes
|
---- text_literal_holder 144 objects, 5760 bytes
|
||||||
---- hierarchy_attachment_point 54 objects, 5184 bytes
|
---- hierarchy_attachment_point 53 objects, 5088 bytes
|
||||||
---- inbuild_work 78 objects, 4992 bytes
|
---- inbuild_work 78 objects, 4992 bytes
|
||||||
---- explicit_action_array 1 x 100 objects, 4832 bytes
|
---- explicit_action_array 1 x 100 objects, 4832 bytes
|
||||||
---- value_property_data 84 objects, 4704 bytes
|
---- value_property_data 84 objects, 4704 bytes
|
||||||
|
@ -238,15 +238,15 @@ Total memory consumption was 303822K = 297 MB
|
||||||
|
|
||||||
36.2% was used for memory not allocated for objects:
|
36.2% was used for memory not allocated for objects:
|
||||||
|
|
||||||
17.0% text stream storage 52937068 bytes in 350617 claims
|
17.0% text stream storage 53026808 bytes in 350844 claims
|
||||||
3.6% dictionary storage 11337728 bytes in 20442 claims
|
3.6% dictionary storage 11336192 bytes in 20439 claims
|
||||||
---- sorting 720 bytes in 3 claims
|
---- sorting 728 bytes in 3 claims
|
||||||
2.3% source text 7200000 bytes in 3 claims
|
2.3% source text 7200000 bytes in 3 claims
|
||||||
3.4% 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
|
---- linguistic stock array 81920 bytes in 2 claims
|
||||||
---- small word set array 105600 bytes in 22 claims
|
---- small word set array 105600 bytes in 22 claims
|
||||||
0.8% inter symbols storage 2671296 bytes in 16401 claims
|
0.8% inter symbols storage 2671040 bytes in 16399 claims
|
||||||
5.4% inter bytecode storage 16802796 bytes in 14 claims
|
5.3% inter bytecode storage 16802796 bytes in 14 claims
|
||||||
2.8% inter links storage 8866944 bytes in 265 claims
|
2.8% inter links storage 8866944 bytes in 265 claims
|
||||||
---- inter tree location list storage 166656 bytes in 26 claims
|
---- inter tree location list storage 166656 bytes in 26 claims
|
||||||
0.5% instance-of-kind counting 1695204 bytes in 1 claim
|
0.5% instance-of-kind counting 1695204 bytes in 1 claim
|
||||||
|
@ -255,5 +255,5 @@ Total memory consumption was 303822K = 297 MB
|
||||||
---- code generation workspace for objects 9648 bytes in 9 claims
|
---- code generation workspace for objects 9648 bytes in 9 claims
|
||||||
---- emitter array storage 154432 bytes in 2037 claims
|
---- emitter array storage 154432 bytes in 2037 claims
|
||||||
|
|
||||||
20.2% was overhead - 63008400 bytes = 61531K = 60 MB
|
20.2% was overhead - 62993024 bytes = 61516K = 60 MB
|
||||||
|
|
||||||
|
|
|
@ -1,33 +1,33 @@
|
||||||
100.0% in inform7 run
|
100.0% in inform7 run
|
||||||
53.7% in compilation to Inter
|
53.9% in compilation to Inter
|
||||||
40.3% in //Sequence::undertake_queued_tasks//
|
40.5% in //Sequence::undertake_queued_tasks//
|
||||||
3.7% in //MajorNodes::pre_pass//
|
3.4% in //MajorNodes::pre_pass//
|
||||||
3.0% in //MajorNodes::pass_1//
|
2.9% in //MajorNodes::pass_1//
|
||||||
1.6% in //ImperativeDefinitions::assess_all//
|
1.6% in //ImperativeDefinitions::assess_all//
|
||||||
0.5% in //ImperativeDefinitions::compile_first_block//
|
0.4% in //ImperativeDefinitions::compile_first_block//
|
||||||
0.5% in //MajorNodes::pass_2//
|
0.4% in //MajorNodes::pass_2//
|
||||||
0.5% in //RTKindConstructors::compile//
|
0.4% in //RTKindConstructors::compile//
|
||||||
0.5% in //World::stage_V//
|
0.4% in //World::stage_V//
|
||||||
0.3% in //Sequence::undertake_queued_tasks//
|
0.3% in //Sequence::undertake_queued_tasks//
|
||||||
0.1% in //InferenceSubjects::emit_all//
|
0.1% in //InferenceSubjects::emit_all//
|
||||||
0.1% in //RTKindConstructors::compile_permissions//
|
0.1% in //RTKindConstructors::compile_permissions//
|
||||||
0.1% in //Task::make_built_in_kind_constructors//
|
0.1% in //Task::make_built_in_kind_constructors//
|
||||||
0.1% in //World::stages_II_and_III//
|
0.1% in //World::stages_II_and_III//
|
||||||
2.0% not specifically accounted for
|
2.3% not specifically accounted for
|
||||||
43.8% in running Inter pipeline
|
43.8% in running Inter pipeline
|
||||||
11.2% in inter step 7/14: consolidate-text
|
11.2% in inter step 7/14: consolidate-text
|
||||||
10.6% in step preparation
|
10.9% in step preparation
|
||||||
9.4% in inter step 2/14: link
|
9.3% in inter step 2/14: link
|
||||||
7.4% in inter step 14/14: generate inform6 -> auto.inf
|
7.1% in inter step 14/14: generate inform6 -> auto.inf
|
||||||
0.8% in inter step 10/14: make-identifiers-unique
|
0.8% in inter step 10/14: make-identifiers-unique
|
||||||
0.3% in inter step 11/14: reconcile-verbs
|
0.3% in inter step 11/14: reconcile-verbs
|
||||||
0.3% in inter step 13/14: eliminate-redundant-operations
|
0.3% in inter step 13/14: eliminate-redundant-operations
|
||||||
0.3% in inter step 6/14: assimilate
|
|
||||||
0.1% in inter step 12/14: eliminate-redundant-labels
|
0.1% in inter step 12/14: eliminate-redundant-labels
|
||||||
0.1% in inter step 4/14: parse-linked-matter
|
0.1% in inter step 4/14: parse-linked-matter
|
||||||
0.1% in inter step 5/14: resolve-conditional-compilation
|
0.1% in inter step 5/14: resolve-conditional-compilation
|
||||||
|
0.1% in inter step 6/14: assimilate
|
||||||
0.1% in inter step 8/14: resolve-external-symbols
|
0.1% in inter step 8/14: resolve-external-symbols
|
||||||
0.1% in inter step 9/14: inspect-plugs
|
0.1% in inter step 9/14: inspect-plugs
|
||||||
2.4% not specifically accounted for
|
2.7% not specifically accounted for
|
||||||
2.0% in supervisor
|
1.8% in supervisor
|
||||||
0.4% not specifically accounted for
|
0.4% not specifically accounted for
|
||||||
|
|
|
@ -82,7 +82,7 @@ command_grammar *CommandGrammars::cg_new(int cg_is) {
|
||||||
cg->where_cg_created = current_sentence;
|
cg->where_cg_created = current_sentence;
|
||||||
cg->slashed = FALSE;
|
cg->slashed = FALSE;
|
||||||
cg->determined = FALSE;
|
cg->determined = FALSE;
|
||||||
cg->compilation_data = RTCommandGrammars::new_compilation_data();
|
cg->compilation_data = RTCommandGrammars::new_compilation_data(cg);
|
||||||
return cg;
|
return cg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,7 +252,6 @@ command_grammar *CommandGrammars::new_named_token(wording W) {
|
||||||
if (cg == NULL) {
|
if (cg == NULL) {
|
||||||
cg = CommandGrammars::cg_new(CG_IS_TOKEN);
|
cg = CommandGrammars::cg_new(CG_IS_TOKEN);
|
||||||
cg->token_name = W;
|
cg->token_name = W;
|
||||||
RTCommandGrammars::new_CG_IS_TOKEN(cg, W);
|
|
||||||
}
|
}
|
||||||
return cg;
|
return cg;
|
||||||
}
|
}
|
||||||
|
@ -397,7 +396,6 @@ command_grammar *CommandGrammars::for_prn(property *prn) {
|
||||||
command_grammar *cg = CommandGrammars::cg_new(CG_IS_PROPERTY_NAME);
|
command_grammar *cg = CommandGrammars::cg_new(CG_IS_PROPERTY_NAME);
|
||||||
EitherOrProperties::set_parsing_grammar(prn, cg);
|
EitherOrProperties::set_parsing_grammar(prn, cg);
|
||||||
cg->prn_understood = prn;
|
cg->prn_understood = prn;
|
||||||
RTCommandGrammars::new_CG_IS_PROPERTY_NAME(cg, prn);
|
|
||||||
return cg;
|
return cg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,7 @@ int ParsingPlugin::production_line(int stage, int debugging,
|
||||||
BENCH(UnderstandFilterTokens::compile);
|
BENCH(UnderstandFilterTokens::compile);
|
||||||
}
|
}
|
||||||
if (stage == INTER4_CSEQ) {
|
if (stage == INTER4_CSEQ) {
|
||||||
|
BENCH(CommandGrammars::prepare);
|
||||||
BENCH(RTCommandGrammars::compile_all);
|
BENCH(RTCommandGrammars::compile_all);
|
||||||
BENCH(UnderstandFilterTokens::compile);
|
BENCH(UnderstandFilterTokens::compile);
|
||||||
}
|
}
|
||||||
|
|
|
@ -363,7 +363,7 @@ void CompileRvalues::compile_understanding(inter_ti *val1, inter_ti *val2, wordi
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
command_grammar *cg = Understand::consultation(W);
|
command_grammar *cg = Understand::consultation(W);
|
||||||
inter_name *iname = RTCommandGrammars::consult_iname(cg);
|
inter_name *iname = RTCommandGrammars::get_consult_fn_iname(cg);
|
||||||
if (iname) {
|
if (iname) {
|
||||||
cu = CREATE(cached_understanding);
|
cu = CREATE(cached_understanding);
|
||||||
cu->understanding_text = W;
|
cu->understanding_text = W;
|
||||||
|
|
|
@ -554,8 +554,6 @@ void Hierarchy::establish(void) {
|
||||||
|
|
||||||
@e COND_TOKENS_HAP
|
@e COND_TOKENS_HAP
|
||||||
@e CONDITIONAL_TOKEN_FN_HL
|
@e CONDITIONAL_TOKEN_FN_HL
|
||||||
@e CONSULT_TOKENS_HAP
|
|
||||||
@e CONSULT_FN_HL
|
|
||||||
@e TESTS_HAP
|
@e TESTS_HAP
|
||||||
@e SCRIPT_HL
|
@e SCRIPT_HL
|
||||||
@e TEST_MD_HL
|
@e TEST_MD_HL
|
||||||
|
@ -564,9 +562,7 @@ void Hierarchy::establish(void) {
|
||||||
@e REQUIREMENTS_HL
|
@e REQUIREMENTS_HL
|
||||||
@e MISTAKES_HAP
|
@e MISTAKES_HAP
|
||||||
@e MISTAKE_FN_HL
|
@e MISTAKE_FN_HL
|
||||||
@e NAMED_TOKENS_HAP
|
|
||||||
@e NO_VERB_VERB_DEFINED_HL
|
@e NO_VERB_VERB_DEFINED_HL
|
||||||
@e PARSE_LINE_FN_HL
|
|
||||||
@e NOUN_FILTERS_HAP
|
@e NOUN_FILTERS_HAP
|
||||||
@e NOUN_FILTER_FN_HL
|
@e NOUN_FILTER_FN_HL
|
||||||
@e PARSE_NAMES_HAP
|
@e PARSE_NAMES_HAP
|
||||||
|
@ -599,6 +595,11 @@ void Hierarchy::establish(void) {
|
||||||
@e MISTAKEACTION_HL
|
@e MISTAKEACTION_HL
|
||||||
@e MISTAKEACTIONSUB_HL
|
@e MISTAKEACTIONSUB_HL
|
||||||
|
|
||||||
|
@e COMMAND_GRAMMARS_HAP
|
||||||
|
@e PROPERTY_GPR_FN_HL
|
||||||
|
@e PARSE_LINE_FN_HL
|
||||||
|
@e CONSULT_FN_HL
|
||||||
|
|
||||||
@<Establish grammar@> =
|
@<Establish grammar@> =
|
||||||
submodule_identity *grammar = Packaging::register_submodule(I"grammar");
|
submodule_identity *grammar = Packaging::register_submodule(I"grammar");
|
||||||
|
|
||||||
|
@ -624,9 +625,6 @@ void Hierarchy::establish(void) {
|
||||||
H_BEGIN_AP(COND_TOKENS_HAP, I"conditional_token", I"_conditional_token")
|
H_BEGIN_AP(COND_TOKENS_HAP, I"conditional_token", I"_conditional_token")
|
||||||
H_F_G(CONDITIONAL_TOKEN_FN_HL, I"conditional_token_fn", I"Cond_Token")
|
H_F_G(CONDITIONAL_TOKEN_FN_HL, I"conditional_token_fn", I"Cond_Token")
|
||||||
H_END
|
H_END
|
||||||
H_BEGIN_AP(CONSULT_TOKENS_HAP, I"consult_token", I"_consult_token")
|
|
||||||
H_F_G(CONSULT_FN_HL, I"consult_fn", I"Consult_Grammar")
|
|
||||||
H_END
|
|
||||||
H_BEGIN_AP(TESTS_HAP, I"test", I"_test")
|
H_BEGIN_AP(TESTS_HAP, I"test", I"_test")
|
||||||
H_C_U(TEST_NAME_MD_HL, I"^name")
|
H_C_U(TEST_NAME_MD_HL, I"^name")
|
||||||
H_C_U(TEST_LENGTH_MD_HL, I"^length")
|
H_C_U(TEST_LENGTH_MD_HL, I"^length")
|
||||||
|
@ -636,9 +634,6 @@ void Hierarchy::establish(void) {
|
||||||
H_BEGIN_AP(MISTAKES_HAP, I"mistake", I"_mistake")
|
H_BEGIN_AP(MISTAKES_HAP, I"mistake", I"_mistake")
|
||||||
H_F_G(MISTAKE_FN_HL, I"mistake_fn", I"Mistake_Token")
|
H_F_G(MISTAKE_FN_HL, I"mistake_fn", I"Mistake_Token")
|
||||||
H_END
|
H_END
|
||||||
H_BEGIN_AP(NAMED_TOKENS_HAP, I"named_token", I"_named_token")
|
|
||||||
H_F_G(PARSE_LINE_FN_HL, I"parse_line_fn", I"GPR_Line")
|
|
||||||
H_END
|
|
||||||
H_BEGIN_AP(NOUN_FILTERS_HAP, I"noun_filter", I"_noun_filter")
|
H_BEGIN_AP(NOUN_FILTERS_HAP, I"noun_filter", I"_noun_filter")
|
||||||
H_F_G(NOUN_FILTER_FN_HL, I"filter_fn", I"Noun_Filter")
|
H_F_G(NOUN_FILTER_FN_HL, I"filter_fn", I"Noun_Filter")
|
||||||
H_END
|
H_END
|
||||||
|
@ -660,6 +655,11 @@ void Hierarchy::establish(void) {
|
||||||
H_BEGIN_AP(COMMANDS_HAP, I"command", I"_command")
|
H_BEGIN_AP(COMMANDS_HAP, I"command", I"_command")
|
||||||
H_F_G(VERB_DECLARATION_ARRAY_HL, NULL, I"GV_Grammar")
|
H_F_G(VERB_DECLARATION_ARRAY_HL, NULL, I"GV_Grammar")
|
||||||
H_END
|
H_END
|
||||||
|
H_BEGIN_AP(COMMAND_GRAMMARS_HAP, I"command_grammar", I"_command_grammar")
|
||||||
|
H_F_G(PROPERTY_GPR_FN_HL, I"either_or_GPR_fn", I"PRN_PN")
|
||||||
|
H_F_G(PARSE_LINE_FN_HL, I"parse_line_fn", I"GPR_Line")
|
||||||
|
H_F_G(CONSULT_FN_HL, I"consult_fn", I"Consult_Grammar")
|
||||||
|
H_END
|
||||||
H_F_T(MISTAKEACTIONSUB_HL, I"MistakeActionSub_fn", I"MistakeActionSub")
|
H_F_T(MISTAKEACTIONSUB_HL, I"MistakeActionSub_fn", I"MistakeActionSub")
|
||||||
H_C_T(NO_VERB_VERB_DEFINED_HL, I"NO_VERB_VERB_DEFINED")
|
H_C_T(NO_VERB_VERB_DEFINED_HL, I"NO_VERB_VERB_DEFINED")
|
||||||
H_END
|
H_END
|
||||||
|
@ -949,7 +949,6 @@ void Hierarchy::establish(void) {
|
||||||
@e PROPERTY_NAME_MD_HL
|
@e PROPERTY_NAME_MD_HL
|
||||||
@e PROPERTY_ID_HL
|
@e PROPERTY_ID_HL
|
||||||
@e PROPERTY_HL
|
@e PROPERTY_HL
|
||||||
@e EITHER_OR_GPR_FN_HL
|
|
||||||
|
|
||||||
@<Establish properties@> =
|
@<Establish properties@> =
|
||||||
submodule_identity *properties = Packaging::register_submodule(I"properties");
|
submodule_identity *properties = Packaging::register_submodule(I"properties");
|
||||||
|
@ -959,7 +958,6 @@ void Hierarchy::establish(void) {
|
||||||
H_C_U(PROPERTY_NAME_MD_HL, I"^name")
|
H_C_U(PROPERTY_NAME_MD_HL, I"^name")
|
||||||
H_C_U(PROPERTY_ID_HL, I"property_id")
|
H_C_U(PROPERTY_ID_HL, I"property_id")
|
||||||
H_C_T(PROPERTY_HL, I"P")
|
H_C_T(PROPERTY_HL, I"P")
|
||||||
H_F_G(EITHER_OR_GPR_FN_HL, I"either_or_GPR_fn", I"PRN_PN")
|
|
||||||
H_END
|
H_END
|
||||||
H_END
|
H_END
|
||||||
|
|
||||||
|
|
|
@ -1070,7 +1070,6 @@ void ParseName::parse_visible_either_or(gpr_kit *kit, property *prn, int visibil
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
if (cg) {
|
if (cg) {
|
||||||
if (cg->compilation_data.cg_prn_iname == NULL) internal_error("no PRN iname");
|
|
||||||
@<Begin a PVP test@>;
|
@<Begin a PVP test@>;
|
||||||
EmitCode::inv(IF_BIP);
|
EmitCode::inv(IF_BIP);
|
||||||
EmitCode::down();
|
EmitCode::down();
|
||||||
|
@ -1079,7 +1078,7 @@ void ParseName::parse_visible_either_or(gpr_kit *kit, property *prn, int visibil
|
||||||
EmitCode::test_if_iname_has_property(K_value, Hierarchy::find(SELF_HL), prn);
|
EmitCode::test_if_iname_has_property(K_value, Hierarchy::find(SELF_HL), prn);
|
||||||
EmitCode::inv(EQ_BIP);
|
EmitCode::inv(EQ_BIP);
|
||||||
EmitCode::down();
|
EmitCode::down();
|
||||||
EmitCode::call(cg->compilation_data.cg_prn_iname);
|
EmitCode::call(RTCommandGrammars::get_property_GPR_fn_iname(cg));
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
|
|
|
@ -96,7 +96,7 @@ inter_name *MistakeAction_iname = NULL;
|
||||||
int RTCommandGrammarLines::cgl_compile_result_of_mistake(gpr_kit *gprk, cg_line *cgl) {
|
int RTCommandGrammarLines::cgl_compile_result_of_mistake(gpr_kit *gprk, cg_line *cgl) {
|
||||||
if (cgl->mistaken) {
|
if (cgl->mistaken) {
|
||||||
if (MistakeAction_iname == NULL) internal_error("no MistakeAction yet");
|
if (MistakeAction_iname == NULL) internal_error("no MistakeAction yet");
|
||||||
EmitArrays::iname_entry(VERB_DIRECTIVE_RESULT_iname);
|
EmitArrays::iname_entry(Hierarchy::find(VERB_DIRECTIVE_RESULT_HL));
|
||||||
EmitArrays::iname_entry(MistakeAction_iname);
|
EmitArrays::iname_entry(MistakeAction_iname);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -305,7 +305,7 @@ void RTCommandGrammarLines::compile_cg_line(gpr_kit *gprk, cg_line *cgl, int cg_
|
||||||
token_values = 0;
|
token_values = 0;
|
||||||
for (i=0; i<2; i++) token_value_kinds[i] = NULL;
|
for (i=0; i<2; i++) token_value_kinds[i] = NULL;
|
||||||
|
|
||||||
if (code_mode == FALSE) EmitArrays::iname_entry(VERB_DIRECTIVE_DIVIDER_iname);
|
if (code_mode == FALSE) EmitArrays::iname_entry(Hierarchy::find(VERB_DIRECTIVE_DIVIDER_HL));
|
||||||
|
|
||||||
inter_symbol *fail_label = NULL;
|
inter_symbol *fail_label = NULL;
|
||||||
|
|
||||||
|
@ -350,7 +350,7 @@ void RTCommandGrammarLines::compile_cg_line(gpr_kit *gprk, cg_line *cgl, int cg_
|
||||||
switch (cg_is) {
|
switch (cg_is) {
|
||||||
case CG_IS_COMMAND:
|
case CG_IS_COMMAND:
|
||||||
if (RTCommandGrammarLines::cgl_compile_result_of_mistake(gprk, cgl)) break;
|
if (RTCommandGrammarLines::cgl_compile_result_of_mistake(gprk, cgl)) break;
|
||||||
EmitArrays::iname_entry(VERB_DIRECTIVE_RESULT_iname);
|
EmitArrays::iname_entry(Hierarchy::find(VERB_DIRECTIVE_RESULT_HL));
|
||||||
EmitArrays::iname_entry(RTActions::double_sharp(cgl->resulting_action));
|
EmitArrays::iname_entry(RTActions::double_sharp(cgl->resulting_action));
|
||||||
|
|
||||||
if (cgl->reversed) {
|
if (cgl->reversed) {
|
||||||
|
@ -364,7 +364,7 @@ void RTCommandGrammarLines::compile_cg_line(gpr_kit *gprk, cg_line *cgl, int cg_
|
||||||
kind *swap = token_value_kinds[0];
|
kind *swap = token_value_kinds[0];
|
||||||
token_value_kinds[0] = token_value_kinds[1];
|
token_value_kinds[0] = token_value_kinds[1];
|
||||||
token_value_kinds[1] = swap;
|
token_value_kinds[1] = swap;
|
||||||
EmitArrays::iname_entry(VERB_DIRECTIVE_REVERSE_iname);
|
EmitArrays::iname_entry(Hierarchy::find(VERB_DIRECTIVE_REVERSE_HL));
|
||||||
}
|
}
|
||||||
|
|
||||||
ActionSemantics::check_valid_application(cgl->resulting_action, token_values,
|
ActionSemantics::check_valid_application(cgl->resulting_action, token_values,
|
||||||
|
@ -558,6 +558,10 @@ void RTCommandGrammarLines::compile_token_line(gpr_kit *gprk, int code_mode, cg_
|
||||||
sgpr->sgpr_iname = Hierarchy::make_iname_in(SLASH_FN_HL, PR);
|
sgpr->sgpr_iname = Hierarchy::make_iname_in(SLASH_FN_HL, PR);
|
||||||
EmitArrays::iname_entry(sgpr->sgpr_iname);
|
EmitArrays::iname_entry(sgpr->sgpr_iname);
|
||||||
last_token_in_lexeme = TRUE;
|
last_token_in_lexeme = TRUE;
|
||||||
|
text_stream *desc = Str::new();
|
||||||
|
WRITE_TO(desc, "slash GPR %d", sgpr->allocation_id);
|
||||||
|
Sequence::queue(&RTCommandGrammarLines::slash_GPR_agent,
|
||||||
|
STORE_POINTER_slash_gpr(sgpr), desc);
|
||||||
} else {
|
} else {
|
||||||
kind *grammar_token_kind =
|
kind *grammar_token_kind =
|
||||||
RTCommandGrammarLines::compile_token(gprk, cgt, code_mode, jump_on_fail, consult_mode);
|
RTCommandGrammarLines::compile_token(gprk, cgt, code_mode, jump_on_fail, consult_mode);
|
||||||
|
@ -594,7 +598,8 @@ void RTCommandGrammarLines::compile_token_line(gpr_kit *gprk, int code_mode, cg_
|
||||||
@<Jump to end of group@>;
|
@<Jump to end of group@>;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (last_token_in_lexeme == FALSE) EmitArrays::iname_entry(VERB_DIRECTIVE_SLASH_iname);
|
if (last_token_in_lexeme == FALSE)
|
||||||
|
EmitArrays::iname_entry(Hierarchy::find(VERB_DIRECTIVE_SLASH_HL));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -616,21 +621,19 @@ void RTCommandGrammarLines::compile_token_line(gpr_kit *gprk, int code_mode, cg_
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
|
|
||||||
@ =
|
@ =
|
||||||
void RTCommandGrammarLines::compile_slash_gprs(void) {
|
void RTCommandGrammarLines::slash_GPR_agent(compilation_subtask *t) {
|
||||||
slash_gpr *sgpr;
|
slash_gpr *sgpr = RETRIEVE_POINTER_slash_gpr(t->data);
|
||||||
LOOP_OVER(sgpr, slash_gpr) {
|
packaging_state save = Functions::begin(sgpr->sgpr_iname);
|
||||||
packaging_state save = Functions::begin(sgpr->sgpr_iname);
|
gpr_kit gprk = GPRs::new_kit();
|
||||||
gpr_kit gprk = GPRs::new_kit();
|
GPRs::add_original_var(&gprk);
|
||||||
GPRs::add_original_var(&gprk);
|
GPRs::add_standard_vars(&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);
|
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);
|
EmitCode::inv(RETURN_BIP);
|
||||||
EmitCode::down();
|
EmitCode::down();
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
Functions::end(save);
|
Functions::end(save);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ This function looks through a CGL list and marks to suppress all those
|
@ This function looks through a CGL list and marks to suppress all those
|
||||||
|
@ -1453,7 +1456,7 @@ kind *RTCommandGrammarLines::compile_token(gpr_kit *gprk, cg_token *cgt, int cod
|
||||||
EmitCode::call(Hierarchy::find(PARSETOKENSTOPPED_HL));
|
EmitCode::call(Hierarchy::find(PARSETOKENSTOPPED_HL));
|
||||||
EmitCode::down();
|
EmitCode::down();
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(GPR_TT_HL));
|
EmitCode::val_iname(K_value, Hierarchy::find(GPR_TT_HL));
|
||||||
EmitCode::val_iname(K_value, RTCommandGrammars::i6_token_as_iname(cg));
|
EmitCode::val_iname(K_value, RTCommandGrammars::get_cg_token_iname(cg));
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
EmitCode::inv(IF_BIP);
|
EmitCode::inv(IF_BIP);
|
||||||
|
@ -1483,7 +1486,7 @@ kind *RTCommandGrammarLines::compile_token(gpr_kit *gprk, cg_token *cgt, int cod
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
EmitCode::up();
|
EmitCode::up();
|
||||||
} else {
|
} else {
|
||||||
EmitArrays::iname_entry(RTCommandGrammars::i6_token_as_iname(cg));
|
EmitArrays::iname_entry(RTCommandGrammars::get_cg_token_iname(cg));
|
||||||
}
|
}
|
||||||
K = CommandGrammars::get_kind_matched(cg);
|
K = CommandGrammars::get_kind_matched(cg);
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -2,51 +2,133 @@
|
||||||
|
|
||||||
Runtime support for CGs.
|
Runtime support for CGs.
|
||||||
|
|
||||||
@
|
@h Generic constants.
|
||||||
|
|
||||||
|
=
|
||||||
|
void RTCommandGrammars::compile_generic_constants(void) {
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_REVERSE_HL, 1);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_SLASH_HL, 1);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_DIVIDER_HL, 1);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_RESULT_HL, 2);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_SPECIAL_HL, 3);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_NUMBER_HL, 4);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_NOUN_HL, 5);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_MULTI_HL, 6);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_MULTIINSIDE_HL, 7);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_MULTIHELD_HL, 8);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_HELD_HL, 9);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_CREATURE_HL, 10);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_TOPIC_HL, 11);
|
||||||
|
RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_MULTIEXCEPT_HL, 12);
|
||||||
|
}
|
||||||
|
|
||||||
|
inter_name *RTCommandGrammars::iname_for_I6_parser_token(cg_token *cgt) {
|
||||||
|
switch (cgt->grammar_token_code) {
|
||||||
|
case NOUN_TOKEN_GTC: return Hierarchy::find(VERB_DIRECTIVE_NOUN_HL);
|
||||||
|
case MULTI_TOKEN_GTC: return Hierarchy::find(VERB_DIRECTIVE_MULTI_HL);
|
||||||
|
case MULTIINSIDE_TOKEN_GTC: return Hierarchy::find(VERB_DIRECTIVE_MULTIINSIDE_HL);
|
||||||
|
case MULTIHELD_TOKEN_GTC: return Hierarchy::find(VERB_DIRECTIVE_MULTIHELD_HL);
|
||||||
|
case HELD_TOKEN_GTC: return Hierarchy::find(VERB_DIRECTIVE_HELD_HL);
|
||||||
|
case CREATURE_TOKEN_GTC: return Hierarchy::find(VERB_DIRECTIVE_CREATURE_HL);
|
||||||
|
case TOPIC_TOKEN_GTC: return Hierarchy::find(VERB_DIRECTIVE_TOPIC_HL);
|
||||||
|
case MULTIEXCEPT_TOKEN_GTC: return Hierarchy::find(VERB_DIRECTIVE_MULTIEXCEPT_HL);
|
||||||
|
default: internal_error("tried to find inter name for invalid GTC");
|
||||||
|
}
|
||||||
|
return NULL; /* to prevent a compiler error: never reached */
|
||||||
|
}
|
||||||
|
|
||||||
|
inter_name *RTCommandGrammars::grammar_constant(int N, int V) {
|
||||||
|
inter_name *iname = Hierarchy::find(N);
|
||||||
|
Emit::numeric_constant(iname, 1);
|
||||||
|
Hierarchy::make_available(iname);
|
||||||
|
return iname;
|
||||||
|
}
|
||||||
|
|
||||||
|
@h Compilation data.
|
||||||
|
Each |command_grammar| object contains this data:
|
||||||
|
|
||||||
|
=
|
||||||
|
|
||||||
=
|
=
|
||||||
typedef struct cg_compilation_data {
|
typedef struct cg_compilation_data {
|
||||||
|
struct package_request *cg_package;
|
||||||
|
|
||||||
struct inter_name *cg_token_iname; /* |CG_IS_TOKEN| */
|
struct inter_name *cg_token_iname; /* |CG_IS_TOKEN| */
|
||||||
struct inter_name *cg_parse_name_iname; /* |CG_IS_VALUE| */
|
|
||||||
struct inter_name *cg_prn_iname; /* CG_IS_PROPERTY_NAME|: the relevant GPR is called this */
|
struct inter_name *property_GPR_fn_iname; /* CG_IS_PROPERTY_NAME| */
|
||||||
struct inter_name *cg_consult_iname; /* for the consult parsing routine if needed */
|
struct text_stream *CG_IS_TOKEN_identifier; /* CG_IS_PROPERTY_NAME| */
|
||||||
struct text_stream *cg_I6_identifier; /* when a token is delegated to an I6 routine */
|
|
||||||
|
struct inter_name *consult_fn_iname; /* CG_IS_CONSULT| */
|
||||||
} cg_compilation_data;
|
} cg_compilation_data;
|
||||||
|
|
||||||
cg_compilation_data RTCommandGrammars::new_compilation_data(void) {
|
cg_compilation_data RTCommandGrammars::new_compilation_data(command_grammar *cg) {
|
||||||
cg_compilation_data cgcd;
|
cg_compilation_data cgcd;
|
||||||
cgcd.cg_parse_name_iname = NULL;
|
cgcd.cg_package = NULL;
|
||||||
cgcd.cg_consult_iname = NULL;
|
cgcd.consult_fn_iname = NULL;
|
||||||
cgcd.cg_prn_iname = NULL;
|
cgcd.property_GPR_fn_iname = NULL;
|
||||||
cgcd.cg_token_iname = NULL;
|
cgcd.cg_token_iname = NULL;
|
||||||
cgcd.cg_I6_identifier = Str::new();
|
cgcd.CG_IS_TOKEN_identifier = Str::new();
|
||||||
return cgcd;
|
return cgcd;
|
||||||
}
|
}
|
||||||
|
|
||||||
inter_name *RTCommandGrammars::i6_token_as_iname(command_grammar *cg) {
|
package_request *RTCommandGrammars::package(command_grammar *cg) {
|
||||||
if (Str::len(cg->compilation_data.cg_I6_identifier) > 0)
|
if (cg->compilation_data.cg_package == NULL)
|
||||||
return Produce::find_by_name(Emit::tree(), cg->compilation_data.cg_I6_identifier);
|
cg->compilation_data.cg_package =
|
||||||
if (cg->compilation_data.cg_token_iname == NULL) internal_error("no token GPR");
|
Hierarchy::completion_package(COMMAND_GRAMMARS_HAP);
|
||||||
|
return cg->compilation_data.cg_package;
|
||||||
|
}
|
||||||
|
|
||||||
|
inter_name *RTCommandGrammars::get_property_GPR_fn_iname(command_grammar *cg) {
|
||||||
|
if ((cg == NULL) || (cg->cg_is != CG_IS_PROPERTY_NAME))
|
||||||
|
internal_error("prn_iname unavailable");
|
||||||
|
if (cg->compilation_data.property_GPR_fn_iname == NULL)
|
||||||
|
cg->compilation_data.property_GPR_fn_iname =
|
||||||
|
Hierarchy::make_iname_in(PROPERTY_GPR_FN_HL,
|
||||||
|
RTCommandGrammars::package(cg));
|
||||||
|
return cg->compilation_data.property_GPR_fn_iname;
|
||||||
|
}
|
||||||
|
|
||||||
|
inter_name *RTCommandGrammars::get_cg_token_iname(command_grammar *cg) {
|
||||||
|
if ((cg == NULL) || (cg->cg_is != CG_IS_TOKEN))
|
||||||
|
internal_error("cg_token_iname unavailable");
|
||||||
|
if (cg->compilation_data.cg_token_iname == NULL) {
|
||||||
|
if (Str::len(cg->compilation_data.CG_IS_TOKEN_identifier) > 0)
|
||||||
|
cg->compilation_data.cg_token_iname =
|
||||||
|
Produce::find_by_name(Emit::tree(),
|
||||||
|
cg->compilation_data.CG_IS_TOKEN_identifier);
|
||||||
|
else
|
||||||
|
cg->compilation_data.cg_token_iname =
|
||||||
|
Hierarchy::make_iname_in(PARSE_LINE_FN_HL,
|
||||||
|
RTCommandGrammars::package(cg));
|
||||||
|
}
|
||||||
return cg->compilation_data.cg_token_iname;
|
return cg->compilation_data.cg_token_iname;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RTCommandGrammars::new_CG_IS_PROPERTY_NAME(command_grammar *cg, property *prn) {
|
|
||||||
cg->compilation_data.cg_prn_iname =
|
|
||||||
Hierarchy::make_iname_in(EITHER_OR_GPR_FN_HL, RTProperties::package(prn));
|
|
||||||
}
|
|
||||||
|
|
||||||
void RTCommandGrammars::new_CG_IS_TOKEN(command_grammar *cg, wording W) {
|
|
||||||
package_request *PR = Hierarchy::local_package(NAMED_TOKENS_HAP);
|
|
||||||
cg->compilation_data.cg_token_iname = Hierarchy::make_iname_in(PARSE_LINE_FN_HL, PR);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RTCommandGrammars::set_CG_IS_TOKEN_identifier(command_grammar *cg, wording W) {
|
void RTCommandGrammars::set_CG_IS_TOKEN_identifier(command_grammar *cg, wording W) {
|
||||||
WRITE_TO(cg->compilation_data.cg_I6_identifier, "%N", Wordings::first_wn(W));
|
if (cg->compilation_data.cg_token_iname) internal_error("too late to translate");
|
||||||
|
WRITE_TO(cg->compilation_data.CG_IS_TOKEN_identifier, "%N", Wordings::first_wn(W));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ 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::get_consult_fn_iname(command_grammar *cg) {
|
||||||
|
if ((cg == NULL) || (cg->cg_is != CG_IS_CONSULT))
|
||||||
|
internal_error("cg_token_iname unavailable");
|
||||||
|
if (cg->compilation_data.consult_fn_iname == NULL)
|
||||||
|
cg->compilation_data.consult_fn_iname =
|
||||||
|
Hierarchy::make_iname_in(CONSULT_FN_HL, RTCommandGrammars::package(cg));
|
||||||
|
return cg->compilation_data.consult_fn_iname;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RTCommandGrammars::create_no_verb_verb(command_grammar *cg) {
|
void RTCommandGrammars::create_no_verb_verb(command_grammar *cg) {
|
||||||
inter_name *iname = Hierarchy::find(NO_VERB_VERB_DEFINED_HL);
|
Emit::numeric_constant(Hierarchy::find(NO_VERB_VERB_DEFINED_HL), (inter_ti) 1);
|
||||||
Emit::numeric_constant(iname, (inter_ti) 1);
|
|
||||||
global_compilation_settings.no_verb_verb_exists = TRUE;
|
global_compilation_settings.no_verb_verb_exists = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,88 +152,168 @@ Sequence is important here: in particular the GPRs must exist before the
|
||||||
|Verb| directives, because otherwise I6 will throw not-declared-yet errors.
|
|Verb| directives, because otherwise I6 will throw not-declared-yet errors.
|
||||||
|
|
||||||
=
|
=
|
||||||
inter_name *VERB_DIRECTIVE_REVERSE_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_SLASH_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_DIVIDER_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_RESULT_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_SPECIAL_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_NUMBER_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_NOUN_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_MULTI_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_MULTIINSIDE_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_MULTIHELD_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_HELD_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_CREATURE_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_TOPIC_iname = NULL;
|
|
||||||
inter_name *VERB_DIRECTIVE_MULTIEXCEPT_iname = NULL;
|
|
||||||
|
|
||||||
void RTCommandGrammars::compile_generic_constants(void) {
|
|
||||||
VERB_DIRECTIVE_REVERSE_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_REVERSE_HL, 1);
|
|
||||||
VERB_DIRECTIVE_SLASH_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_SLASH_HL, 1);
|
|
||||||
VERB_DIRECTIVE_DIVIDER_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_DIVIDER_HL, 1);
|
|
||||||
VERB_DIRECTIVE_RESULT_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_RESULT_HL, 2);
|
|
||||||
VERB_DIRECTIVE_SPECIAL_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_SPECIAL_HL, 3);
|
|
||||||
VERB_DIRECTIVE_NUMBER_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_NUMBER_HL, 4);
|
|
||||||
VERB_DIRECTIVE_NOUN_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_NOUN_HL, 5);
|
|
||||||
VERB_DIRECTIVE_MULTI_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_MULTI_HL, 6);
|
|
||||||
VERB_DIRECTIVE_MULTIINSIDE_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_MULTIINSIDE_HL, 7);
|
|
||||||
VERB_DIRECTIVE_MULTIHELD_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_MULTIHELD_HL, 8);
|
|
||||||
VERB_DIRECTIVE_HELD_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_HELD_HL, 9);
|
|
||||||
VERB_DIRECTIVE_CREATURE_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_CREATURE_HL, 10);
|
|
||||||
VERB_DIRECTIVE_TOPIC_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_TOPIC_HL, 11);
|
|
||||||
VERB_DIRECTIVE_MULTIEXCEPT_iname = RTCommandGrammars::grammar_constant(VERB_DIRECTIVE_MULTIEXCEPT_HL, 12);
|
|
||||||
}
|
|
||||||
|
|
||||||
inter_name *RTCommandGrammars::iname_for_I6_parser_token(cg_token *cgt) {
|
|
||||||
switch (cgt->grammar_token_code) {
|
|
||||||
case NOUN_TOKEN_GTC: return VERB_DIRECTIVE_NOUN_iname;
|
|
||||||
case MULTI_TOKEN_GTC: return VERB_DIRECTIVE_MULTI_iname;
|
|
||||||
case MULTIINSIDE_TOKEN_GTC: return VERB_DIRECTIVE_MULTIINSIDE_iname;
|
|
||||||
case MULTIHELD_TOKEN_GTC: return VERB_DIRECTIVE_MULTIHELD_iname;
|
|
||||||
case HELD_TOKEN_GTC: return VERB_DIRECTIVE_HELD_iname;
|
|
||||||
case CREATURE_TOKEN_GTC: return VERB_DIRECTIVE_CREATURE_iname;
|
|
||||||
case TOPIC_TOKEN_GTC: return VERB_DIRECTIVE_TOPIC_iname;
|
|
||||||
case MULTIEXCEPT_TOKEN_GTC: return VERB_DIRECTIVE_MULTIEXCEPT_iname;
|
|
||||||
default: internal_error("tried to find inter name for invalid GTC");
|
|
||||||
}
|
|
||||||
return NULL; /* to prevent a gcc error: never reached */
|
|
||||||
}
|
|
||||||
|
|
||||||
inter_name *RTCommandGrammars::grammar_constant(int N, int V) {
|
|
||||||
inter_name *iname = Hierarchy::find(N);
|
|
||||||
Emit::numeric_constant(iname, 1);
|
|
||||||
Hierarchy::make_available(iname);
|
|
||||||
return iname;
|
|
||||||
}
|
|
||||||
|
|
||||||
void RTCommandGrammars::compile_all(void) {
|
void RTCommandGrammars::compile_all(void) {
|
||||||
command_grammar *cg;
|
command_grammar *cg;
|
||||||
CommandGrammars::prepare();
|
|
||||||
|
|
||||||
Log::new_stage(I"Sorting and compiling non-value grammar (G3, G4)");
|
|
||||||
|
|
||||||
|
|
||||||
LOOP_OVER(cg, command_grammar)
|
LOOP_OVER(cg, command_grammar)
|
||||||
if (cg->cg_is == CG_IS_TOKEN)
|
if (cg->cg_is == CG_IS_TOKEN) {
|
||||||
RTCommandGrammars::compile(cg); /* makes GPRs for designed tokens */
|
text_stream *desc = Str::new();
|
||||||
|
WRITE_TO(desc, "command grammar for token");
|
||||||
|
Sequence::queue(&RTCommandGrammars::compile,
|
||||||
|
STORE_POINTER_command_grammar(cg), desc);
|
||||||
|
}
|
||||||
|
|
||||||
LOOP_OVER(cg, command_grammar)
|
LOOP_OVER(cg, command_grammar)
|
||||||
if (cg->cg_is == CG_IS_COMMAND)
|
if (cg->cg_is == CG_IS_COMMAND) {
|
||||||
RTCommandGrammars::compile(cg); /* makes |Verb| directives */
|
text_stream *desc = Str::new();
|
||||||
|
WRITE_TO(desc, "command grammar for command '%W'", cg->command);
|
||||||
|
Sequence::queue(&RTCommandGrammars::compile,
|
||||||
|
STORE_POINTER_command_grammar(cg), desc);
|
||||||
|
}
|
||||||
|
|
||||||
LOOP_OVER(cg, command_grammar)
|
LOOP_OVER(cg, command_grammar)
|
||||||
if (cg->cg_is == CG_IS_SUBJECT)
|
if (cg->cg_is == CG_IS_SUBJECT) {
|
||||||
RTCommandGrammars::compile(cg); /* makes routines for use in |parse_name| */
|
text_stream *desc = Str::new();
|
||||||
|
WRITE_TO(desc, "command grammar for parse_name on '%W'",
|
||||||
|
InferenceSubjects::get_name_text(cg->subj_understood));
|
||||||
|
Sequence::queue(&RTCommandGrammars::compile,
|
||||||
|
STORE_POINTER_command_grammar(cg), desc);
|
||||||
|
}
|
||||||
|
|
||||||
LOOP_OVER(cg, command_grammar)
|
LOOP_OVER(cg, command_grammar)
|
||||||
if (cg->cg_is == CG_IS_CONSULT)
|
if (cg->cg_is == CG_IS_CONSULT) {
|
||||||
RTCommandGrammars::compile(cg); /* routines to parse snippets, used as values */
|
text_stream *desc = Str::new();
|
||||||
|
WRITE_TO(desc, "command grammar for consult at '%W'",
|
||||||
|
Node::get_text(cg->where_cg_created));
|
||||||
|
Sequence::queue(&RTCommandGrammars::compile,
|
||||||
|
STORE_POINTER_command_grammar(cg), desc);
|
||||||
|
}
|
||||||
|
|
||||||
LOOP_OVER(cg, command_grammar)
|
LOOP_OVER(cg, command_grammar)
|
||||||
if (cg->cg_is == CG_IS_PROPERTY_NAME)
|
if (cg->cg_is == CG_IS_PROPERTY_NAME) {
|
||||||
RTCommandGrammars::compile(cg); /* makes routines for use in |parse_name| */
|
text_stream *desc = Str::new();
|
||||||
|
WRITE_TO(desc, "command grammar for property '%W'",
|
||||||
|
cg->prn_understood->name);
|
||||||
|
Sequence::queue(&RTCommandGrammars::compile,
|
||||||
|
STORE_POINTER_command_grammar(cg), desc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
RTCommandGrammarLines::compile_slash_gprs();
|
@ The following function unites, so far as possible, the different forms of
|
||||||
|
CG by compiling each of them as a sandwich: top slice, filling, bottom slice.
|
||||||
|
|
||||||
|
The interesting case is of a CG representing names for an object: the
|
||||||
|
name-behaviour needs to be inherited from the object's kind, and so on up
|
||||||
|
the kinds hierarchy, but this is a case where I7's kind hierarchy does not
|
||||||
|
agree with I6's class hierarchy. I6 has no (nice) way to inherit |parse_name|
|
||||||
|
behaviour from a class to an instance. So we will simply pile up extra
|
||||||
|
fillings into the sandwich. The order of these is important: by getting
|
||||||
|
in first, grammar for the instance takes priority; its immediate kind has
|
||||||
|
next priority, and so on up the hierarchy.
|
||||||
|
|
||||||
|
=
|
||||||
|
void RTCommandGrammars::compile(compilation_subtask *t) {
|
||||||
|
command_grammar *cg = RETRIEVE_POINTER_command_grammar(t->data);
|
||||||
|
if (CGLines::list_length(cg) == 0) return;
|
||||||
|
|
||||||
|
LOGIF(GRAMMAR, "Compiling command grammar $G\n", cg);
|
||||||
|
|
||||||
|
current_sentence = cg->where_cg_created;
|
||||||
|
|
||||||
|
RTCommandGrammarLines::reset_labels();
|
||||||
|
switch(cg->cg_is) {
|
||||||
|
case CG_IS_COMMAND: {
|
||||||
|
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);
|
||||||
|
EmitArrays::end(save);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CG_IS_TOKEN: {
|
||||||
|
gpr_kit gprk = GPRs::new_kit();
|
||||||
|
inter_name *iname = RTCommandGrammars::get_cg_token_iname(cg);
|
||||||
|
packaging_state save = Functions::begin(iname);
|
||||||
|
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);
|
||||||
|
EmitCode::val_iname(K_value, Hierarchy::find(WN_HL));
|
||||||
|
EmitCode::up();
|
||||||
|
EmitCode::inv(STORE_BIP);
|
||||||
|
EmitCode::down();
|
||||||
|
EmitCode::ref_symbol(K_value, gprk.rv_s);
|
||||||
|
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
||||||
|
EmitCode::up();
|
||||||
|
RTCommandGrammars::cg_compile_lines(&gprk, cg);
|
||||||
|
EmitCode::inv(RETURN_BIP);
|
||||||
|
EmitCode::down();
|
||||||
|
EmitCode::val_iname(K_value, Hierarchy::find(GPR_FAIL_HL));
|
||||||
|
EmitCode::up();
|
||||||
|
Functions::end(save);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CG_IS_CONSULT: {
|
||||||
|
gpr_kit gprk = GPRs::new_kit();
|
||||||
|
inter_name *iname = RTCommandGrammars::get_consult_fn_iname(cg);
|
||||||
|
packaging_state save = Functions::begin(iname);
|
||||||
|
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));
|
||||||
|
EmitCode::val_symbol(K_value, gprk.range_from_s);
|
||||||
|
EmitCode::up();
|
||||||
|
EmitCode::inv(STORE_BIP);
|
||||||
|
EmitCode::down();
|
||||||
|
EmitCode::ref_symbol(K_value, gprk.original_wn_s);
|
||||||
|
EmitCode::val_iname(K_value, Hierarchy::find(WN_HL));
|
||||||
|
EmitCode::up();
|
||||||
|
EmitCode::inv(STORE_BIP);
|
||||||
|
EmitCode::down();
|
||||||
|
EmitCode::ref_symbol(K_value, gprk.rv_s);
|
||||||
|
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
||||||
|
EmitCode::up();
|
||||||
|
RTCommandGrammars::cg_compile_lines(&gprk, cg);
|
||||||
|
EmitCode::inv(RETURN_BIP);
|
||||||
|
EmitCode::down();
|
||||||
|
EmitCode::val_iname(K_value, Hierarchy::find(GPR_FAIL_HL));
|
||||||
|
EmitCode::up();
|
||||||
|
Functions::end(save);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CG_IS_SUBJECT:
|
||||||
|
break;
|
||||||
|
case CG_IS_VALUE:
|
||||||
|
internal_error("iv");
|
||||||
|
break;
|
||||||
|
case CG_IS_PROPERTY_NAME: {
|
||||||
|
gpr_kit gprk = GPRs::new_kit();
|
||||||
|
inter_name *iname = RTCommandGrammars::get_property_GPR_fn_iname(cg);
|
||||||
|
packaging_state save = Functions::begin(iname);
|
||||||
|
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);
|
||||||
|
EmitCode::val_iname(K_value, Hierarchy::find(WN_HL));
|
||||||
|
EmitCode::up();
|
||||||
|
EmitCode::inv(STORE_BIP);
|
||||||
|
EmitCode::down();
|
||||||
|
EmitCode::ref_symbol(K_value, gprk.rv_s);
|
||||||
|
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
||||||
|
EmitCode::up();
|
||||||
|
RTCommandGrammars::cg_compile_lines(&gprk, cg);
|
||||||
|
EmitCode::inv(RETURN_BIP);
|
||||||
|
EmitCode::down();
|
||||||
|
EmitCode::val_iname(K_value, Hierarchy::find(GPR_FAIL_HL));
|
||||||
|
EmitCode::up();
|
||||||
|
Functions::end(save);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ Some tokens require suitable I6 routines to have already been compiled,
|
@ Some tokens require suitable I6 routines to have already been compiled,
|
||||||
|
@ -236,122 +398,6 @@ void RTCommandGrammars::cg_compile_lines(gpr_kit *gprk, command_grammar *cg) {
|
||||||
cg->cg_is, cg, CommandGrammars::cg_is_genuinely_verbal(cg)); /* And Phase IV here */
|
cg->cg_is, cg, CommandGrammars::cg_is_genuinely_verbal(cg)); /* And Phase IV here */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ The following function unites, so far as possible, the different forms of
|
|
||||||
CG by compiling each of them as a sandwich: top slice, filling, bottom slice.
|
|
||||||
|
|
||||||
The interesting case is of a CG representing names for an object: the
|
|
||||||
name-behaviour needs to be inherited from the object's kind, and so on up
|
|
||||||
the kinds hierarchy, but this is a case where I7's kind hierarchy does not
|
|
||||||
agree with I6's class hierarchy. I6 has no (nice) way to inherit |parse_name|
|
|
||||||
behaviour from a class to an instance. So we will simply pile up extra
|
|
||||||
fillings into the sandwich. The order of these is important: by getting
|
|
||||||
in first, grammar for the instance takes priority; its immediate kind has
|
|
||||||
next priority, and so on up the hierarchy.
|
|
||||||
|
|
||||||
=
|
|
||||||
void RTCommandGrammars::compile(command_grammar *cg) {
|
|
||||||
if (CGLines::list_length(cg) == 0) return;
|
|
||||||
|
|
||||||
LOGIF(GRAMMAR, "Compiling command grammar $G\n", cg);
|
|
||||||
|
|
||||||
current_sentence = cg->where_cg_created;
|
|
||||||
|
|
||||||
RTCommandGrammarLines::reset_labels();
|
|
||||||
switch(cg->cg_is) {
|
|
||||||
case CG_IS_COMMAND: {
|
|
||||||
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);
|
|
||||||
EmitArrays::end(save);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CG_IS_TOKEN: {
|
|
||||||
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);
|
|
||||||
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);
|
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(WN_HL));
|
|
||||||
EmitCode::up();
|
|
||||||
EmitCode::inv(STORE_BIP);
|
|
||||||
EmitCode::down();
|
|
||||||
EmitCode::ref_symbol(K_value, gprk.rv_s);
|
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
|
||||||
EmitCode::up();
|
|
||||||
RTCommandGrammars::cg_compile_lines(&gprk, cg);
|
|
||||||
EmitCode::inv(RETURN_BIP);
|
|
||||||
EmitCode::down();
|
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(GPR_FAIL_HL));
|
|
||||||
EmitCode::up();
|
|
||||||
Functions::end(save);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CG_IS_CONSULT: {
|
|
||||||
gpr_kit gprk = GPRs::new_kit();
|
|
||||||
inter_name *iname = RTCommandGrammars::consult_iname(cg);
|
|
||||||
packaging_state save = Functions::begin(iname);
|
|
||||||
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));
|
|
||||||
EmitCode::val_symbol(K_value, gprk.range_from_s);
|
|
||||||
EmitCode::up();
|
|
||||||
EmitCode::inv(STORE_BIP);
|
|
||||||
EmitCode::down();
|
|
||||||
EmitCode::ref_symbol(K_value, gprk.original_wn_s);
|
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(WN_HL));
|
|
||||||
EmitCode::up();
|
|
||||||
EmitCode::inv(STORE_BIP);
|
|
||||||
EmitCode::down();
|
|
||||||
EmitCode::ref_symbol(K_value, gprk.rv_s);
|
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
|
||||||
EmitCode::up();
|
|
||||||
RTCommandGrammars::cg_compile_lines(&gprk, cg);
|
|
||||||
EmitCode::inv(RETURN_BIP);
|
|
||||||
EmitCode::down();
|
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(GPR_FAIL_HL));
|
|
||||||
EmitCode::up();
|
|
||||||
Functions::end(save);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CG_IS_SUBJECT:
|
|
||||||
break;
|
|
||||||
case CG_IS_VALUE:
|
|
||||||
internal_error("iv");
|
|
||||||
break;
|
|
||||||
case CG_IS_PROPERTY_NAME: {
|
|
||||||
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);
|
|
||||||
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);
|
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(WN_HL));
|
|
||||||
EmitCode::up();
|
|
||||||
EmitCode::inv(STORE_BIP);
|
|
||||||
EmitCode::down();
|
|
||||||
EmitCode::ref_symbol(K_value, gprk.rv_s);
|
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(GPR_PREPOSITION_HL));
|
|
||||||
EmitCode::up();
|
|
||||||
RTCommandGrammars::cg_compile_lines(&gprk, cg);
|
|
||||||
EmitCode::inv(RETURN_BIP);
|
|
||||||
EmitCode::down();
|
|
||||||
EmitCode::val_iname(K_value, Hierarchy::find(GPR_FAIL_HL));
|
|
||||||
EmitCode::up();
|
|
||||||
Functions::end(save);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RTCommandGrammars::compile_iv(gpr_kit *gprk, command_grammar *cg) {
|
void RTCommandGrammars::compile_iv(gpr_kit *gprk, command_grammar *cg) {
|
||||||
if (CGLines::list_length(cg) > 0) {
|
if (CGLines::list_length(cg) > 0) {
|
||||||
LOGIF(GRAMMAR, "Compiling command grammar $G\n", cg);
|
LOGIF(GRAMMAR, "Compiling command grammar $G\n", cg);
|
||||||
|
@ -365,22 +411,3 @@ void RTCommandGrammars::compile_iv(gpr_kit *gprk, command_grammar *cg) {
|
||||||
void RTCommandGrammars::emit_determination_type(determination_type *gty) {
|
void RTCommandGrammars::emit_determination_type(determination_type *gty) {
|
||||||
CompileValues::to_code_val(gty->term[0].what);
|
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;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue