|
|
@ -66,7 +66,7 @@ function togglePopup(material_id) {
|
|
|
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">kinds</a></li><li><a href="index.html#2">Chapter 2: Kinds</a></li><li><b>Kind Interpreter</b></li></ul></div>
|
|
|
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">kinds</a></li><li><a href="index.html#2">Chapter 2: Kinds</a></li><li><b>Kind Interpreter</b></li></ul></div>
|
|
|
|
<p class="purpose">To read in details of the built-in kinds from template files, setting them up ready for use.</p>
|
|
|
|
<p class="purpose">To read in details of the built-in kinds from template files, setting them up ready for use.</p>
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="toc"><li><a href="2-ki.html#SP1">§1. Definitions</a></li><li><a href="2-ki.html#SP12">§12. Errors and limitations</a></li><li><a href="2-ki.html#SP13">§13. Setting up the interpreter</a></li><li><a href="2-ki.html#SP14">§14. The kind command despatcher</a></li><li><a href="2-ki.html#SP15">§15. Parsing single kind commands</a></li><li><a href="2-ki.html#SP16">§16. Source text templates</a></li><li><a href="2-ki.html#SP22">§22. Type macros</a></li><li><a href="2-ki.html#SP25">§25. The kind text archiver</a></li><li><a href="2-ki.html#SP27">§27. Error messages</a></li><li><a href="2-ki.html#SP28">§28. Applying kind commands</a></li><li><a href="2-ki.html#SP29">§29. Completing a batch</a></li></ul><hr class="tocbar">
|
|
|
|
<ul class="toc"><li><a href="2-ki.html#SP1">§1. Definitions</a></li><li><a href="2-ki.html#SP12">§12. Errors and limitations</a></li><li><a href="2-ki.html#SP13">§13. Setting up the interpreter</a></li><li><a href="2-ki.html#SP14">§14. The kind command despatcher</a></li><li><a href="2-ki.html#SP15">§15. Parsing single kind commands</a></li><li><a href="2-ki.html#SP16">§16. Source text templates</a></li><li><a href="2-ki.html#SP21">§21. Type macros</a></li><li><a href="2-ki.html#SP24">§24. The kind text archiver</a></li><li><a href="2-ki.html#SP26">§26. Error messages</a></li><li><a href="2-ki.html#SP27">§27. Applying kind commands</a></li><li><a href="2-ki.html#SP28">§28. Completing a batch</a></li></ul><hr class="tocbar">
|
|
|
|
|
|
|
|
|
|
|
|
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Definitions. </b></p>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Definitions. </b></p>
|
|
|
|
|
|
|
|
|
|
|
@ -327,7 +327,7 @@ colons.)
|
|
|
|
<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">Str::get_last_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">) == </span><span class="character-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">Str::get_last_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">) == </span><span class="character-syntax">':'</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-ki.html#SP23" class="function-link"><span class="function-syntax">Kinds::Interpreter::recording_a_kind_macro</span></a><span class="plain-syntax">()) </span><a href="2-ki.html#SP23" class="function-link"><span class="function-syntax">Kinds::Interpreter::end_kind_macro</span></a><span class="plain-syntax">();</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-ki.html#SP22" class="function-link"><span class="function-syntax">Kinds::Interpreter::recording_a_kind_macro</span></a><span class="plain-syntax">()) </span><a href="2-ki.html#SP22" class="function-link"><span class="function-syntax">Kinds::Interpreter::end_kind_macro</span></a><span class="plain-syntax">();</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_last_character</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">); </span><span class="comment-syntax"> remove the terminal colon</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_last_character</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">); </span><span class="comment-syntax"> remove the terminal colon</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP14_1" class="named-paragraph-link"><span class="named-paragraph">Deal with the heading at the top of a kind command block</span><span class="named-paragraph-number">14.1</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP14_1" class="named-paragraph-link"><span class="named-paragraph">Deal with the heading at the top of a kind command block</span><span class="named-paragraph-number">14.1</span></a></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="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
@ -335,8 +335,8 @@ colons.)
|
|
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">single_kind_command</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP15" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_command</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">single_kind_command</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP15" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_command</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">);</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-ki.html#SP23" class="function-link"><span class="function-syntax">Kinds::Interpreter::recording_a_kind_macro</span></a><span class="plain-syntax">()) </span><a href="2-ki.html#SP23" class="function-link"><span class="function-syntax">Kinds::Interpreter::record_into_kind_macro</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">stc</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-ki.html#SP22" class="function-link"><span class="function-syntax">Kinds::Interpreter::recording_a_kind_macro</span></a><span class="plain-syntax">()) </span><a href="2-ki.html#SP22" class="function-link"><span class="function-syntax">Kinds::Interpreter::record_into_kind_macro</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">stc</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">constructor_described</span><span class="plain-syntax">) </span><a href="2-ki.html#SP28" class="function-link"><span class="function-syntax">Kinds::Interpreter::apply_kind_command</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">stc</span><span class="plain-syntax">, </span><span class="identifier-syntax">constructor_described</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">constructor_described</span><span class="plain-syntax">) </span><a href="2-ki.html#SP27" class="function-link"><span class="function-syntax">Kinds::Interpreter::apply_kind_command</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">stc</span><span class="plain-syntax">, </span><span class="identifier-syntax">constructor_described</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"kind command describes unspecified kind"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"kind command describes unspecified kind"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
@ -344,7 +344,7 @@ colons.)
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">) == </span><span class="character-syntax">'#'</span><span class="plain-syntax">) </span><a href="2-ki.html#SP23" class="function-link"><span class="function-syntax">Kinds::Interpreter::begin_kind_macro</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">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">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">) == </span><span class="character-syntax">'#'</span><span class="plain-syntax">) </span><a href="2-ki.html#SP22" class="function-link"><span class="function-syntax">Kinds::Interpreter::begin_kind_macro</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">) == </span><span class="character-syntax">'*'</span><span class="plain-syntax">) </span><a href="2-ki.html#SP18" class="function-link"><span class="function-syntax">Kinds::Interpreter::begin_kind_template</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">) == </span><span class="character-syntax">'*'</span><span class="plain-syntax">) </span><a href="2-ki.html#SP18" class="function-link"><span class="function-syntax">Kinds::Interpreter::begin_kind_template</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</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">TEMPORARY_TEXT</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">)</span>
|
|
|
@ -427,7 +427,7 @@ begin with those characters, but that doesn't matter for the things we need.
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
|
|
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP27" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">, </span><span class="string-syntax">"kind command without argument"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">, </span><span class="string-syntax">"kind command without argument"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
@ -447,7 +447,7 @@ so we neglect it.
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">table_of_kind_commands</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">table_of_kind_commands</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]);</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</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">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</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-ki.html#SP27" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"no such kind command"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"no such kind command"</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP15_4"></a><b>§15.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a boolean argument for a kind command</span><span class="named-paragraph-number">15.4</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP15_4"></a><b>§15.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a boolean argument for a kind command</span><span class="named-paragraph-number">15.4</span></span><span class="comment-syntax"> =</span>
|
|
|
@ -456,7 +456,7 @@ so we neglect it.
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"yes"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">boolean_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"yes"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">boolean_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"no"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">boolean_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"no"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">boolean_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-ki.html#SP27" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"boolean kind command takes yes/no argument"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"boolean kind command takes yes/no argument"</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP15_5"></a><b>§15.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a CCM argument for a kind command</span><span class="named-paragraph-number">15.5</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP15_5"></a><b>§15.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a CCM argument for a kind command</span><span class="named-paragraph-number">15.5</span></span><span class="comment-syntax"> =</span>
|
|
|
@ -467,7 +467,7 @@ so we neglect it.
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"literal"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">ccm_argument</span><span class="plain-syntax"> = </span><span class="constant-syntax">LITERAL_CCM</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"literal"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">ccm_argument</span><span class="plain-syntax"> = </span><span class="constant-syntax">LITERAL_CCM</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"quantitative"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">ccm_argument</span><span class="plain-syntax"> = </span><span class="constant-syntax">NAMED_CONSTANT_CCM</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"quantitative"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">ccm_argument</span><span class="plain-syntax"> = </span><span class="constant-syntax">NAMED_CONSTANT_CCM</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"special"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">ccm_argument</span><span class="plain-syntax"> = </span><span class="constant-syntax">SPECIAL_CCM</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"special"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">ccm_argument</span><span class="plain-syntax"> = </span><span class="constant-syntax">SPECIAL_CCM</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-ki.html#SP27" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"kind command with unknown constant-compilation-method"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"kind command with unknown constant-compilation-method"</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP15_6"></a><b>§15.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a textual argument for a kind command</span><span class="named-paragraph-number">15.6</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP15_6"></a><b>§15.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a textual argument for a kind command</span><span class="named-paragraph-number">15.6</span></span><span class="comment-syntax"> =</span>
|
|
|
@ -486,7 +486,7 @@ so we neglect it.
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">) >= </span><span class="constant-syntax">30</span><span class="plain-syntax">)</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">) >= </span><span class="constant-syntax">30</span><span class="plain-syntax">)</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP27" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"too many words in kind command"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"too many words in kind command"</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>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">vocabulary_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">WordAssemblages::from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">vocabulary_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">WordAssemblages::from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
@ -517,16 +517,16 @@ so we neglect it.
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">template_argument</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP17" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_template_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">template_argument</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP17" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_template_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">template_argument</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">stc</span><span class="plain-syntax">.</span><span class="element-syntax">template_argument</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-ki.html#SP27" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"unknown template name in kind command"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"unknown template name in kind command"</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP15_11"></a><b>§15.11. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a macro name argument for a kind command</span><span class="named-paragraph-number">15.11</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP15_11"></a><b>§15.11. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a macro name argument for a kind command</span><span class="named-paragraph-number">15.11</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">macro_argument</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP22" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_macro_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">macro_argument</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP21" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_macro_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">macro_argument</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">stc</span><span class="plain-syntax">.</span><span class="element-syntax">macro_argument</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-ki.html#SP27" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"unknown template name in kind command"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"unknown template name in kind command"</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP15">§15</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP16"></a><b>§16. Source text templates. </b>These are passages of I7 source text which can be inserted into the main
|
|
|
|
<p class="commentary firstcommentary"><a id="SP16"></a><b>§16. Source text templates. </b>These are passages of I7 source text which can be inserted into the main
|
|
|
@ -609,50 +609,25 @@ called just once, with the single source text line.)
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-ki.html#SP17" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_template_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-ki.html#SP17" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_template_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"duplicate definition of source text template"</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">"duplicate definition of source text template"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_template</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP17" class="function-link"><span class="function-syntax">Kinds::Interpreter::new_kind_template</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_template</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP17" class="function-link"><span class="function-syntax">Kinds::Interpreter::new_kind_template</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_template</span><span class="plain-syntax">-></span><span class="element-syntax">template_text</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::begin_recording_kind_text</span></a><span class="plain-syntax">();</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_template</span><span class="plain-syntax">-></span><span class="element-syntax">template_text</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP25" class="function-link"><span class="function-syntax">Kinds::Interpreter::begin_recording_kind_text</span></a><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">Kinds::Interpreter::record_into_kind_template</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">Kinds::Interpreter::record_into_kind_template</span></span>:<br/><a href="2-ki.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::record_into_kind_template</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">Kinds::Interpreter::record_into_kind_template</span></span>:<br/><a href="2-ki.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::record_kind_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">line</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP25" class="function-link"><span class="function-syntax">Kinds::Interpreter::record_kind_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">line</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">Kinds::Interpreter::end_kind_template</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">Kinds::Interpreter::end_kind_template</span></span>:<br/><a href="2-ki.html#SP14">§14</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">Kinds::Interpreter::end_kind_template</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">Kinds::Interpreter::end_kind_template</span></span>:<br/><a href="2-ki.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_kind_template</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 stt currently recording"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_kind_template</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 stt currently recording"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP26" class="function-link"><span class="function-syntax">Kinds::Interpreter::end_recording_kind_text</span></a><span class="plain-syntax">();</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP25" class="function-link"><span class="function-syntax">Kinds::Interpreter::end_recording_kind_text</span></a><span class="plain-syntax">();</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_template</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_kind_template</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP19"></a><b>§19. </b>So much for recording a template. To "play back", we need to take its text
|
|
|
|
<p class="commentary firstcommentary"><a id="SP19"></a><b>§19. </b>So much for recording a template. To "play back", we need to take its text
|
|
|
|
and squeeze it into the main source text, but there's a timing issue: when
|
|
|
|
and squeeze it into the main source text.
|
|
|
|
we read kind commands it is very early in Inform's run, and the lexer may not
|
|
|
|
|
|
|
|
even have started yet. So we simply remember our intention to insert the text:
|
|
|
|
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">era_of_kind_template_transcription</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">Kinds::Interpreter::transcribe_kind_template</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">Kinds::Interpreter::transcribe_kind_template</span></span>:<br/><a href="2-ki.html#SP27_1">§27.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">,</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::remember_to_transcribe_spec_template</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">Kinds::Interpreter::remember_to_transcribe_spec_template</span></span>:<br/><a href="2-ki.html#SP28_1">§28.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_template_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ttd</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">era_of_kind_template_transcription</span><span class="plain-syntax">) {</span>
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP20" class="function-link"><span class="function-syntax">Kinds::Interpreter::transcribe_kind_template</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">ttd</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
|
|
|
|
|
|
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">kind_template_obligation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tto</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">kind_template_obligation</span><span class="plain-syntax">);</span>
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">tto</span><span class="plain-syntax">-></span><span class="element-syntax">remembered_template</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ttd</span><span class="plain-syntax">;</span>
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">tto</span><span class="plain-syntax">-></span><span class="element-syntax">remembered_constructor</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
|
|
|
|
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
<p class="commentary firstcommentary"><a id="SP20"></a><b>§20. </b>...until now, when it's later on and the source text does indeed exist.
|
|
|
|
|
|
|
|
</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">Kinds::Interpreter::include_templates_for_kinds</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</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">era_of_kind_template_transcription</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">kind_template_obligation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tto</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">tto</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_template_obligation</span><span class="plain-syntax">)</span>
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP20" class="function-link"><span class="function-syntax">Kinds::Interpreter::transcribe_kind_template</span></a><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">tto</span><span class="plain-syntax">-></span><span class="element-syntax">remembered_template</span><span class="plain-syntax">, </span><span class="identifier-syntax">tto</span><span class="plain-syntax">-></span><span class="element-syntax">remembered_constructor</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">Kinds::Interpreter::transcribe_kind_template</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">Kinds::Interpreter::transcribe_kind_template</span></span>:<br/><a href="2-ki.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</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">kind_template_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ttd</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">kind_template_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ttd</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ttd</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 transcribe missing source text template"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ttd</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 transcribe missing source text template"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
|
|
|
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
|
|
@ -665,7 +640,7 @@ even have started yet. So we simply remember our intention to insert the text:
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'\n'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">' '</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">i</span><span class="plain-syntax">++; </span><span class="reserved-syntax">continue</span><span 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::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'\n'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">' '</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">i</span><span class="plain-syntax">++; </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; }</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">)</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</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">terminator</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">terminator</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP20_1" class="named-paragraph-link"><span class="named-paragraph">Transcribe one line of the template into the line buffer</span><span class="named-paragraph-number">20.1</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP19_1" class="named-paragraph-link"><span class="named-paragraph">Transcribe one line of the template into the line buffer</span><span class="named-paragraph-number">19.1</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">terminator</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">Sentences::make_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">XW</span><span class="plain-syntax">, </span><span class="identifier-syntax">terminator</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">terminator</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">Sentences::make_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">XW</span><span class="plain-syntax">, </span><span class="identifier-syntax">terminator</span><span class="plain-syntax">);</span>
|
|
|
@ -674,7 +649,7 @@ even have started yet. So we simply remember our intention to insert the text:
|
|
|
|
<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="SP20_1"></a><b>§20.1. </b>Inside template text, anything in angle brackets <...> is a wildcard.
|
|
|
|
<p class="commentary firstcommentary"><a id="SP19_1"></a><b>§19.1. </b>Inside template text, anything in angle brackets <...> is a wildcard.
|
|
|
|
These cannot be nested and cannot include newlines. All other material is
|
|
|
|
These cannot be nested and cannot include newlines. All other material is
|
|
|
|
copied verbatim into the line buffer.
|
|
|
|
copied verbatim into the line buffer.
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
@ -684,7 +659,7 @@ particular we wouldn't recognise a stop inside quoted matter. This does
|
|
|
|
not matter, since such things never come into kind definitions.
|
|
|
|
not matter, since such things never come into kind definitions.
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe one line of the template into the line buffer</span><span class="named-paragraph-number">20.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe one line of the template into the line buffer</span><span class="named-paragraph-number">19.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
@ -695,7 +670,7 @@ not matter, since such things never come into kind definitions.
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="character-syntax">'\n'</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="character-syntax">'>'</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="character-syntax">'\n'</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="character-syntax">'>'</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">++));</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">++));</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP20_1_1" class="named-paragraph-link"><span class="named-paragraph">Transcribe the template wildcard</span><span class="named-paragraph-number">20.1.1</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP19_1_1" class="named-paragraph-link"><span class="named-paragraph">Transcribe the template wildcard</span><span class="named-paragraph-number">19.1.1</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">)</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</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">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">++));</span>
|
|
|
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">++));</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
@ -706,67 +681,67 @@ not matter, since such things never come into kind definitions.
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_last_character</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">); </span><span class="identifier-syntax">terminator</span><span class="plain-syntax"> = </span><span class="character-syntax">':'</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_last_character</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">); </span><span class="identifier-syntax">terminator</span><span class="plain-syntax"> = </span><span class="character-syntax">':'</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP20">§20</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP19">§19</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP20_1_1"></a><b>§20.1.1. </b>Only five wildcards are recognised:
|
|
|
|
<p class="commentary firstcommentary"><a id="SP19_1_1"></a><b>§19.1.1. </b>Only five wildcards are recognised:
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the template wildcard</span><span class="named-paragraph-number">20.1.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the template wildcard</span><span class="named-paragraph-number">19.1.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"kind"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"kind"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP20_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's name</span><span class="named-paragraph-number">20.1.1.1</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP19_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's name</span><span class="named-paragraph-number">19.1.1.1</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"lower-case-kind"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"lower-case-kind"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP20_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's name in lower case</span><span class="named-paragraph-number">20.1.1.2</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP19_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's name in lower case</span><span class="named-paragraph-number">19.1.1.2</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"kind-weak-ID"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"kind-weak-ID"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP20_1_1_3" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's weak ID</span><span class="named-paragraph-number">20.1.1.3</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP19_1_1_3" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's weak ID</span><span class="named-paragraph-number">19.1.1.3</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"printing-routine"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"printing-routine"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP20_1_1_4" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's I6 printing routine</span><span class="named-paragraph-number">20.1.1.4</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP19_1_1_4" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's I6 printing routine</span><span class="named-paragraph-number">19.1.1.4</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"comparison-routine"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"comparison-routine"</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP20_1_1_5" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's I6 comparison routine</span><span class="named-paragraph-number">20.1.1.5</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP19_1_1_5" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's I6 comparison routine</span><span class="named-paragraph-number">19.1.1.5</span></a></span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no such source text template wildcard"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no such source text template wildcard"</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP20_1">§20.1</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP19_1">§19.1</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP20_1_1_1"></a><b>§20.1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's name</span><span class="named-paragraph-number">20.1.1.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP19_1_1_1"></a><b>§19.1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's name</span><span class="named-paragraph-number">19.1.1.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP21" class="function-link"><span class="function-syntax">Kinds::Interpreter::transcribe_constructor_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</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-ki.html#SP20" class="function-link"><span class="function-syntax">Kinds::Interpreter::transcribe_constructor_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP20_1_1">§20.1.1</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP19_1_1">§19.1.1</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP20_1_1_2"></a><b>§20.1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's name in lower case</span><span class="named-paragraph-number">20.1.1.2</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP19_1_1_2"></a><b>§19.1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's name in lower case</span><span class="named-paragraph-number">19.1.1.2</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP21" class="function-link"><span class="function-syntax">Kinds::Interpreter::transcribe_constructor_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP20" class="function-link"><span class="function-syntax">Kinds::Interpreter::transcribe_constructor_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP20_1_1">§20.1.1</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP19_1_1">§19.1.1</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP20_1_1_3"></a><b>§20.1.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's weak ID</span><span class="named-paragraph-number">20.1.1.3</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP19_1_1_3"></a><b>§19.1.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's weak ID</span><span class="named-paragraph-number">19.1.1.3</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">weak_kind_ID</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">template_line_buffer</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">weak_kind_ID</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP20_1_1">§20.1.1</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP19_1_1">§19.1.1</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP20_1_1_4"></a><b>§20.1.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's I6 printing routine</span><span class="named-paragraph-number">20.1.1.4</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP19_1_1_4"></a><b>§19.1.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's I6 printing routine</span><span class="named-paragraph-number">19.1.1.4</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">dt_I6_identifier</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">template_line_buffer</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">dt_I6_identifier</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP20_1_1">§20.1.1</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP19_1_1">§19.1.1</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP20_1_1_5"></a><b>§20.1.1.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's I6 comparison routine</span><span class="named-paragraph-number">20.1.1.5</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP19_1_1_5"></a><b>§19.1.1.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's I6 comparison routine</span><span class="named-paragraph-number">19.1.1.5</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">comparison_routine</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">template_line_buffer</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">comparison_routine</span><span class="plain-syntax">);</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP20_1_1">§20.1.1</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP19_1_1">§19.1.1</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP21"></a><b>§21. </b>Where:
|
|
|
|
<p class="commentary firstcommentary"><a id="SP20"></a><b>§20. </b>Where:
|
|
|
|
</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">Kinds::Interpreter::transcribe_constructor_name</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::transcribe_constructor_name</span></span>:<br/><a href="2-ki.html#SP20_1_1_1">§20.1.1.1</a>, <a href="2-ki.html#SP20_1_1_2">§20.1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">lower_case</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::transcribe_constructor_name</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">Kinds::Interpreter::transcribe_constructor_name</span></span>:<br/><a href="2-ki.html#SP19_1_1_1">§19.1.1.1</a>, <a href="2-ki.html#SP19_1_1_2">§19.1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">lower_case</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">dt_tag</span><span class="plain-syntax">) </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><a href="2-kc2.html#SP8" class="function-link"><span class="function-syntax">Kinds::Constructors::get_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">dt_tag</span><span class="plain-syntax">) </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><a href="2-kc2.html#SP8" class="function-link"><span class="function-syntax">Kinds::Constructors::get_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
|
|
@ -787,21 +762,21 @@ not matter, since such things never come into kind definitions.
|
|
|
|
<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="SP22"></a><b>§22. Type macros. </b>These are much simpler, and are just lists of kind commands grouped together
|
|
|
|
<p class="commentary firstcommentary"><a id="SP21"></a><b>§21. Type macros. </b>These are much simpler, and are just lists of kind commands grouped together
|
|
|
|
under names.
|
|
|
|
under names.
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> the one now being recorded</span>
|
|
|
|
<span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> the one now being recorded</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Interpreter::new_kind_macro</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">Kinds::Interpreter::new_kind_macro</span></span>:<br/><a href="2-ki.html#SP23">§23</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Interpreter::new_kind_macro</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">Kinds::Interpreter::new_kind_macro</span></span>:<br/><a href="2-ki.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tmd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tmd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">tmd</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">tmd</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">tmd</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</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">tmd</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">tmd</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">tmd</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Interpreter::parse_kind_macro_name</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::parse_kind_macro_name</span></span>:<br/><a href="2-ki.html#SP15_11">§15.11</a>, <a href="2-ki.html#SP23">§23</a><br/>Kind Constructors - <a href="2-kc2.html#SP7_1">§7.1</a>, <a href="2-kc2.html#SP11">§11</a>, <a href="2-kc2.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Interpreter::parse_kind_macro_name</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::parse_kind_macro_name</span></span>:<br/><a href="2-ki.html#SP15_11">§15.11</a>, <a href="2-ki.html#SP22">§22</a><br/>Kind Constructors - <a href="2-kc2.html#SP7_1">§7.1</a>, <a href="2-kc2.html#SP11">§11</a>, <a href="2-kc2.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tmd</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tmd</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">tmd</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_macro_definition</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">tmd</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax">)</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">tmd</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_name</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">tmd</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_name</span><span class="plain-syntax">))</span>
|
|
|
@ -809,22 +784,22 @@ under names.
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP23"></a><b>§23. </b>And here once again is the code to record macros:
|
|
|
|
<p class="commentary firstcommentary"><a id="SP22"></a><b>§22. </b>And here once again is the code to record macros:
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::recording_a_kind_macro</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::recording_a_kind_macro</span></span>:<br/><a href="2-ki.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::recording_a_kind_macro</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">Kinds::Interpreter::recording_a_kind_macro</span></span>:<br/><a href="2-ki.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::begin_kind_macro</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::begin_kind_macro</span></span>:<br/><a href="2-ki.html#SP14_1">§14.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::begin_kind_macro</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::begin_kind_macro</span></span>:<br/><a href="2-ki.html#SP14_1">§14.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-ki.html#SP22" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_macro_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-ki.html#SP21" class="function-link"><span class="function-syntax">Kinds::Interpreter::parse_kind_macro_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"duplicate definition of kind command macro"</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">"duplicate definition of kind command macro"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP22" class="function-link"><span class="function-syntax">Kinds::Interpreter::new_kind_macro</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax"> = </span><a href="2-ki.html#SP21" class="function-link"><span class="function-syntax">Kinds::Interpreter::new_kind_macro</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::record_into_kind_macro</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::record_into_kind_macro</span></span>:<br/><a href="2-ki.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">single_kind_command</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::record_into_kind_macro</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::record_into_kind_macro</span></span>:<br/><a href="2-ki.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">single_kind_command</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_kind_macro</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">current_kind_macro</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"kind macro not being recorded"</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">"kind macro not being recorded"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line_count</span><span class="plain-syntax"> >= </span><span class="constant-syntax">MAX_KIND_MACRO_LENGTH</span><span class="plain-syntax">)</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line_count</span><span class="plain-syntax"> >= </span><span class="constant-syntax">MAX_KIND_MACRO_LENGTH</span><span class="plain-syntax">)</span>
|
|
|
@ -832,28 +807,28 @@ under names.
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line</span><span class="plain-syntax">[</span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line_count</span><span class="plain-syntax">++] = </span><span class="identifier-syntax">stc</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line</span><span class="plain-syntax">[</span><span class="identifier-syntax">current_kind_macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line_count</span><span class="plain-syntax">++] = </span><span class="identifier-syntax">stc</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">Kinds::Interpreter::end_kind_macro</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">Kinds::Interpreter::end_kind_macro</span></span>:<br/><a href="2-ki.html#SP14">§14</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">Kinds::Interpreter::end_kind_macro</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::end_kind_macro</span></span>:<br/><a href="2-ki.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_kind_macro</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">"ended kind macro outside one"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_kind_macro</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">"ended kind macro outside one"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">current_kind_macro</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_kind_macro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP24"></a><b>§24. </b>Playing back is easier, since it's just a matter of despatching the stored
|
|
|
|
<p class="commentary firstcommentary"><a id="SP23"></a><b>§23. </b>Playing back is easier, since it's just a matter of despatching the stored
|
|
|
|
commands in sequence to the relevant kind.
|
|
|
|
commands in sequence to the relevant kind.
|
|
|
|
</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">Kinds::Interpreter::play_back_kind_macro</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::play_back_kind_macro</span></span>:<br/><a href="2-ki.html#SP28_1">§28.1</a><br/>Kind Constructors - <a href="2-kc2.html#SP7_1">§7.1</a>, <a href="2-kc2.html#SP11">§11</a>, <a href="2-kc2.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">macro</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::play_back_kind_macro</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">Kinds::Interpreter::play_back_kind_macro</span></span>:<br/><a href="2-ki.html#SP27_1">§27.1</a><br/>Kind Constructors - <a href="2-kc2.html#SP7_1">§7.1</a>, <a href="2-kc2.html#SP11">§11</a>, <a href="2-kc2.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">macro</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">macro</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no such kind macro to play back"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">macro</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no such kind macro to play back"</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">KIND_CREATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Macro %S on %S (%d lines)\n"</span><span class="plain-syntax">,</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">KIND_CREATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Macro %S on %S (%d lines)\n"</span><span class="plain-syntax">,</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">name_in_template_code</span><span class="plain-syntax">, </span><span class="identifier-syntax">macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line_count</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">name_in_template_code</span><span class="plain-syntax">, </span><span class="identifier-syntax">macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line_count</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="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><macro-></span><span class="element-syntax">kind_macro_line_count</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax"><macro-></span><span class="element-syntax">kind_macro_line_count</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP28" class="function-link"><span class="function-syntax">Kinds::Interpreter::apply_kind_command</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">], </span><span class="identifier-syntax">con</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP27" class="function-link"><span class="function-syntax">Kinds::Interpreter::apply_kind_command</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_line</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">], </span><span class="identifier-syntax">con</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</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">KIND_CREATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Macro %S ended\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_name</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">KIND_CREATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Macro %S ended\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">macro</span><span class="plain-syntax">-></span><span class="element-syntax">kind_macro_name</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP25"></a><b>§25. The kind text archiver. </b>Large chunks of the text in the template will need to exist permanently in
|
|
|
|
<p class="commentary firstcommentary"><a id="SP24"></a><b>§24. The kind text archiver. </b>Large chunks of the text in the template will need to exist permanently in
|
|
|
|
memory, and we go into recording mode to accept a series of them,
|
|
|
|
memory, and we go into recording mode to accept a series of them,
|
|
|
|
concatenated with newlines dividing them, in a text stream.
|
|
|
|
concatenated with newlines dividing them, in a text stream.
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
@ -861,33 +836,33 @@ concatenated with newlines dividing them, in a text stream.
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_recording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_recording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP26"></a><b>§26. </b>And here is recording mode:
|
|
|
|
<p class="commentary firstcommentary"><a id="SP25"></a><b>§25. </b>And here is recording mode:
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Interpreter::begin_recording_kind_text</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::begin_recording_kind_text</span></span>:<br/><a href="2-ki.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Interpreter::begin_recording_kind_text</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::begin_recording_kind_text</span></span>:<br/><a href="2-ki.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_recording</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">kind_recording</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">kind_recording</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">kind_recording</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">Kinds::Interpreter::record_kind_text</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">Kinds::Interpreter::record_kind_text</span></span>:<br/><a href="2-ki.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::record_kind_text</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::record_kind_text</span></span>:<br/><a href="2-ki.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kind_recording</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"can't record outside recording"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kind_recording</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"can't record outside recording"</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">kind_recording</span><span class="plain-syntax">, </span><span class="string-syntax">"%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</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">kind_recording</span><span class="plain-syntax">, </span><span class="string-syntax">"%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</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">Kinds::Interpreter::end_recording_kind_text</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::end_recording_kind_text</span></span>:<br/><a href="2-ki.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::end_recording_kind_text</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">Kinds::Interpreter::end_recording_kind_text</span></span>:<br/><a href="2-ki.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_recording</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_recording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP27"></a><b>§27. Error messages. </b></p>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP26"></a><b>§26. Error messages. </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">Kinds::Interpreter::kind_command_error</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></span>:<br/><a href="2-ki.html#SP15_2">§15.2</a>, <a href="2-ki.html#SP15_3">§15.3</a>, <a href="2-ki.html#SP15_4">§15.4</a>, <a href="2-ki.html#SP15_5">§15.5</a>, <a href="2-ki.html#SP15_7">§15.7</a>, <a href="2-ki.html#SP15_10">§15.10</a>, <a href="2-ki.html#SP15_11">§15.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">error</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::kind_command_error</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::kind_command_error</span></span>:<br/><a href="2-ki.html#SP15_2">§15.2</a>, <a href="2-ki.html#SP15_3">§15.3</a>, <a href="2-ki.html#SP15_4">§15.4</a>, <a href="2-ki.html#SP15_5">§15.5</a>, <a href="2-ki.html#SP15_7">§15.7</a>, <a href="2-ki.html#SP15_10">§15.10</a>, <a href="2-ki.html#SP15_11">§15.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">error</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Kind command error found at: %S\n"</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Kind command error found at: %S\n"</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">internal_error</span><span class="plain-syntax">(</span><span class="identifier-syntax">error</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="identifier-syntax">error</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP28"></a><b>§28. Applying kind commands. </b>We take a single kind command and apply it to a given kind.
|
|
|
|
<p class="commentary firstcommentary"><a id="SP27"></a><b>§27. Applying kind commands. </b>We take a single kind command and apply it to a given kind.
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">apply_macro_KCC</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
|
|
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">apply_macro_KCC</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
|
|
@ -930,7 +905,7 @@ concatenated with newlines dividing them, in a text stream.
|
|
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">template_variable_number_KCC</span><span class="plain-syntax"> </span><span class="constant-syntax">40</span>
|
|
|
|
<span class="definition-keyword">define</span> <span class="constant-syntax">template_variable_number_KCC</span><span class="plain-syntax"> </span><span class="constant-syntax">40</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<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">Kinds::Interpreter::apply_kind_command</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::apply_kind_command</span></span>:<br/><a href="2-ki.html#SP14">§14</a>, <a href="2-ki.html#SP24">§24</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">single_kind_command</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::apply_kind_command</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Kinds::Interpreter::apply_kind_command</span></span>:<br/><a href="2-ki.html#SP14">§14</a>, <a href="2-ki.html#SP23">§23</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">single_kind_command</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null STC 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">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"null STC command"</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">KIND_CREATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"apply: %s (%d/%d/%S/%S) to %d/%S\n"</span><span class="plain-syntax">,</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">KIND_CREATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"apply: %s (%d/%d/%S/%S) to %d/%S\n"</span><span class="plain-syntax">,</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax">-></span><span class="element-syntax">text_of_command</span><span class="plain-syntax">,</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax">-></span><span class="element-syntax">text_of_command</span><span class="plain-syntax">,</span>
|
|
|
@ -940,37 +915,37 @@ concatenated with newlines dividing them, in a text stream.
|
|
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tcc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax">-></span><span class="element-syntax">opcode_number</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">tcc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax">-></span><span class="element-syntax">opcode_number</span><span class="plain-syntax">;</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP28_1" class="named-paragraph-link"><span class="named-paragraph">Apply kind macros or transcribe kind templates on request</span><span class="named-paragraph-number">28.1</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP27_1" class="named-paragraph-link"><span class="named-paragraph">Apply kind macros or transcribe kind templates on request</span><span class="named-paragraph-number">27.1</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP28_2" class="named-paragraph-link"><span class="named-paragraph">Most kind commands simply set a field in the constructor structure</span><span class="named-paragraph-number">28.2</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP27_2" class="named-paragraph-link"><span class="named-paragraph">Most kind commands simply set a field in the constructor structure</span><span class="named-paragraph-number">27.2</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP28_3" class="named-paragraph-link"><span class="named-paragraph">A few kind commands contribute to linked lists in the constructor structure</span><span class="named-paragraph-number">28.3</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP27_3" class="named-paragraph-link"><span class="named-paragraph">A few kind commands contribute to linked lists in the constructor structure</span><span class="named-paragraph-number">27.3</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP28_4" class="named-paragraph-link"><span class="named-paragraph">And the rest fill in fields in the constructor structure in miscellaneous other ways</span><span class="named-paragraph-number">28.4</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP27_4" class="named-paragraph-link"><span class="named-paragraph">And the rest fill in fields in the constructor structure in miscellaneous other ways</span><span class="named-paragraph-number">27.4</span></a></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">"unimplemented kind 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">"unimplemented kind command"</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP28_1"></a><b>§28.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Apply kind macros or transcribe kind templates on request</span><span class="named-paragraph-number">28.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP27_1"></a><b>§27.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Apply kind macros or transcribe kind templates on request</span><span class="named-paragraph-number">27.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tcc</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">tcc</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">apply_template_KCC:</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">apply_template_KCC:</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP19" class="function-link"><span class="function-syntax">Kinds::Interpreter::remember_to_transcribe_spec_template</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">template_argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP19" class="function-link"><span class="function-syntax">Kinds::Interpreter::transcribe_kind_template</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">template_argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</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="reserved-syntax">return</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">apply_macro_KCC:</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">apply_macro_KCC:</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP24" class="function-link"><span class="function-syntax">Kinds::Interpreter::play_back_kind_macro</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">macro_argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><a href="2-ki.html#SP23" class="function-link"><span class="function-syntax">Kinds::Interpreter::play_back_kind_macro</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">macro_argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</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="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP28">§28</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP27">§27</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP28_2"></a><b>§28.2. </b></p>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP27_2"></a><b>§27.2. </b></p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">SET_BOOLEAN_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">field</span><span class="plain-syntax">) </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</span><span class="plain-syntax">##</span><span class="identifier-syntax">_KCC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="identifier-syntax">field</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">boolean_argument</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
|
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">SET_BOOLEAN_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">field</span><span class="plain-syntax">) </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</span><span class="plain-syntax">##</span><span class="identifier-syntax">_KCC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="identifier-syntax">field</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">boolean_argument</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="definition-keyword">define</span> <span class="identifier-syntax">SET_INTEGER_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">field</span><span class="plain-syntax">) </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</span><span class="plain-syntax">##</span><span class="identifier-syntax">_KCC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="identifier-syntax">field</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">numeric_argument</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="definition-keyword">define</span> <span class="identifier-syntax">SET_INTEGER_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">field</span><span class="plain-syntax">) </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</span><span class="plain-syntax">##</span><span class="identifier-syntax">_KCC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="identifier-syntax">field</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">numeric_argument</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="definition-keyword">define</span> <span class="identifier-syntax">SET_TEXTUAL_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">field</span><span class="plain-syntax">) </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</span><span class="plain-syntax">##</span><span class="identifier-syntax">_KCC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="identifier-syntax">field</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">textual_argument</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="definition-keyword">define</span> <span class="identifier-syntax">SET_TEXTUAL_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">field</span><span class="plain-syntax">) </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</span><span class="plain-syntax">##</span><span class="identifier-syntax">_KCC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="identifier-syntax">field</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">textual_argument</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="definition-keyword">define</span> <span class="identifier-syntax">SET_CCM_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">field</span><span class="plain-syntax">) </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</span><span class="plain-syntax">##</span><span class="identifier-syntax">_KCC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="identifier-syntax">field</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">ccm_argument</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
|
<span class="definition-keyword">define</span> <span class="identifier-syntax">SET_CCM_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">field</span><span class="plain-syntax">) </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</span><span class="plain-syntax">##</span><span class="identifier-syntax">_KCC:</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="identifier-syntax">field</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">ccm_argument</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Most kind commands simply set a field in the constructor structure</span><span class="named-paragraph-number">28.2</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Most kind commands simply set a field in the constructor structure</span><span class="named-paragraph-number">27.2</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
@ -1003,8 +978,8 @@ concatenated with newlines dividing them, in a text stream.
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SET_TEXTUAL_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">specification_text</span><span class="plain-syntax">)</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">SET_TEXTUAL_FIELD</span><span class="plain-syntax">(</span><span class="identifier-syntax">specification_text</span><span class="plain-syntax">)</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP28">§28</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP27">§27</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP28_3"></a><b>§28.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">A few kind commands contribute to linked lists in the constructor structure</span><span class="named-paragraph-number">28.3</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP27_3"></a><b>§27.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">A few kind commands contribute to linked lists in the constructor structure</span><span class="named-paragraph-number">27.3</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
@ -1038,14 +1013,14 @@ concatenated with newlines dividing them, in a text stream.
|
|
|
|
<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>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP28">§28</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP27">§27</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP28_4"></a><b>§28.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">And the rest fill in fields in the constructor structure in miscellaneous other ways</span><span class="named-paragraph-number">28.4</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP27_4"></a><b>§27.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">And the rest fill in fields in the constructor structure in miscellaneous other ways</span><span class="named-paragraph-number">27.4</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tcc</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">tcc</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">constructor_arity_KCC:</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">constructor_arity_KCC:</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP28_4_1" class="named-paragraph-link"><span class="named-paragraph">Parse the constructor arity text</span><span class="named-paragraph-number">28.4.1</span></a></span><span class="plain-syntax">;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ki.html#SP27_4_1" class="named-paragraph-link"><span class="named-paragraph">Parse the constructor arity text</span><span class="named-paragraph-number">27.4.1</span></a></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="reserved-syntax">return</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">description_KCC:</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">description_KCC:</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">constructor_description</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">textual_argument</span><span class="plain-syntax">);</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">constructor_description</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">textual_argument</span><span class="plain-syntax">);</span>
|
|
|
@ -1107,8 +1082,8 @@ concatenated with newlines dividing them, in a text stream.
|
|
|
|
<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>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP28">§28</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP27">§27</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP28_4_1"></a><b>§28.4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the constructor arity text</span><span class="named-paragraph-number">28.4.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP27_4_1"></a><b>§27.4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse the constructor arity text</span><span class="named-paragraph-number">27.4.1</span></span><span class="comment-syntax"> =</span>
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
|
<pre class="displayed-code all-displayed-code code-font">
|
|
|
@ -1137,8 +1112,8 @@ concatenated with newlines dividing them, in a text stream.
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
<span class="plain-syntax"> }</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">constructor_arity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">c</span><span class="plain-syntax">+1;</span>
|
|
|
|
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-></span><span class="element-syntax">constructor_arity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">c</span><span class="plain-syntax">+1;</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP28_4">§28.4</a>.</li></ul>
|
|
|
|
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP27_4">§27.4</a>.</li></ul>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP29"></a><b>§29. Completing a batch. </b>At one time it was useful to do some mopping-up work after a round of kind
|
|
|
|
<p class="commentary firstcommentary"><a id="SP28"></a><b>§28. Completing a batch. </b>At one time it was useful to do some mopping-up work after a round of kind
|
|
|
|
commands, so the following hook was devised; but at present it's not needed.
|
|
|
|
commands, so the following hook was devised; but at present it's not needed.
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
@ -1146,7 +1121,7 @@ commands, so the following hook was devised; but at present it's not needed.
|
|
|
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Interpreter::batch_done</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">Kinds::Interpreter::batch_done</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
<span class="plain-syntax">}</span>
|
|
|
|
</pre>
|
|
|
|
</pre>
|
|
|
|
<p class="commentary firstcommentary"><a id="SP30"></a><b>§30. </b>And that completes the kind interpreter.
|
|
|
|
<p class="commentary firstcommentary"><a id="SP29"></a><b>§29. </b>And that completes the kind interpreter.
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
<nav role="progress"><div class="progresscontainer">
|
|
|
|
<nav role="progress"><div class="progresscontainer">
|
|
|
|