mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Implementation of IE-0033
This commit is contained in:
parent
25378d8d5d
commit
ebc55aac22
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6X18 'Krypton' (16 September 2023)
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6X19 'Krypton' (20 September 2023)
|
||||
|
||||
## About Inform
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: beta
|
||||
Build Date: 16 September 2023
|
||||
Build Number: 6X18
|
||||
Build Date: 20 September 2023
|
||||
Build Number: 6X19
|
||||
|
|
|
@ -1092,7 +1092,8 @@ capacity; and so is the number 0 itself.
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">previous_token</span><span class="plain-syntax">-></span><span class="element-syntax">eqn_type</span><span class="plain-syntax"> == </span><span class="constant-syntax">OPEN_BRACKET_EQN</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token</span><span class="plain-syntax"> = </span><a href="7-eqt.html#SP24" class="function-link"><span class="function-syntax">Equations::enode_new_op</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">UNARY_MINUS_OPERATION</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">token</span><span class="plain-syntax"> = </span><a href="7-eqt.html#SP24" class="function-link"><span class="function-syntax">Equations::enode_new_op</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">MINUS_OPERATION</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">token</span><span class="plain-syntax"> = </span><a href="7-eqt.html#SP24" class="function-link"><span class="function-syntax">Equations::enode_new_op</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">MINUS_OPERATION</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'/'</span><span class="plain-syntax">: </span><span class="identifier-syntax">token</span><span class="plain-syntax"> = </span><a href="7-eqt.html#SP24" class="function-link"><span class="function-syntax">Equations::enode_new_op</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DIVIDE_OPERATION</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'*'</span><span class="plain-syntax">: </span><span class="identifier-syntax">token</span><span class="plain-syntax"> = </span><a href="7-eqt.html#SP24" class="function-link"><span class="function-syntax">Equations::enode_new_op</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TIMES_OPERATION</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'^'</span><span class="plain-syntax">: </span><span class="identifier-syntax">token</span><span class="plain-syntax"> = </span><a href="7-eqt.html#SP24" class="function-link"><span class="function-syntax">Equations::enode_new_op</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">POWER_OPERATION</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -421,7 +421,7 @@ of a typical desktop of 2001.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> data <id> <filename> format <format></span>
|
||||
<span class="plain-syntax"> data <id> <filename> type <format></span>
|
||||
</pre>
|
||||
<p class="commentary">Tells us to take the given data file and embed it into the blorb so that its
|
||||
contents can be read whenever the story is played. The "format" here can be
|
||||
|
@ -429,7 +429,7 @@ either <span class="extract"><span class="extract-syntax">TEXT</span></span> or
|
|||
</p>
|
||||
|
||||
<p class="commentary">Exactly what <span class="extract"><span class="extract-syntax">TEXT</span></span> means will depend on how the story file wants to read
|
||||
the file, but the convention used by Inform is that it should be UTF-8 plaib
|
||||
the file, but the convention used by Inform is that it should be UTF-8 plain
|
||||
text with Unix line breaks.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -80,6 +80,8 @@ which use this module:
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">kind_constructor_instance_rule_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">unit_sequence_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">star_invention_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">additional_property_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">additional_property_set_CLASS</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">dimensional_rule</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
||||
|
@ -94,6 +96,8 @@ which use this module:
|
|||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">kind_constructor_instance_rule</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">unit_sequence</span><span class="plain-syntax">, </span><span class="constant-syntax">50</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">star_invention</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">additional_property</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">additional_property_set</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>Like all modules, this one must define a <span class="extract"><span class="extract-syntax">start</span></span> and <span class="extract"><span class="extract-syntax">end</span></span> function:
|
||||
</p>
|
||||
|
|
|
@ -79,7 +79,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">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="function-syntax">NeptuneMacros::parse_name</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">NeptuneMacros::parse_name</span></span>:<br/>Neptune Syntax - <a href="4-ns.html#SP5_12">§5.12</a><br/>Kind Constructors - <a href="4-kc2.html#SP10_1">§10.1</a>, <a href="4-kc2.html#SP13">§13</a>, <a href="4-kc2.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">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">kind_macro_definition</span><span class="plain-syntax"> *</span><span class="function-syntax">NeptuneMacros::parse_name</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">NeptuneMacros::parse_name</span></span>:<br/>Neptune Syntax - <a href="4-ns.html#SP5_5_9">§5.5.9</a><br/>Kind Constructors - <a href="4-kc2.html#SP10_1">§10.1</a>, <a href="4-kc2.html#SP13">§13</a>, <a href="4-kc2.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">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="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>
|
||||
|
|
|
@ -106,7 +106,7 @@ the Inform GUI can at least display them, if not very elegantly.
|
|||
</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">NeptuneFiles::error</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">NeptuneFiles::error</span></span>:<br/><a href="4-nf.html#SP1">§1</a><br/>Neptune Syntax - <a href="4-ns.html#SP5">§5</a>, <a href="4-ns.html#SP5_2">§5.2</a>, <a href="4-ns.html#SP5_3">§5.3</a>, <a href="4-ns.html#SP5_4">§5.4</a>, <a href="4-ns.html#SP5_5">§5.5</a>, <a href="4-ns.html#SP5_6">§5.6</a>, <a href="4-ns.html#SP5_8">§5.8</a>, <a href="4-ns.html#SP5_11">§5.11</a>, <a href="4-ns.html#SP5_12">§5.12</a><br/>Macros - <a href="4-mcr.html#SP1">§1</a>, <a href="4-mcr.html#SP2">§2</a><br/>Star Templates - <a href="4-st.html#SP2">§2</a>, <a href="4-st.html#SP5">§5</a>, <a href="4-st.html#SP5_1_1">§5.1.1</a>, <a href="4-st.html#SP8">§8</a><br/>Kind Commands - <a href="4-kc.html#SP1">§1</a>, <a href="4-kc.html#SP1_3">§1.3</a>, <a href="4-kc.html#SP1_4">§1.4</a>, <a href="4-kc.html#SP1_4_1">§1.4.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">command</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</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">NeptuneFiles::error</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">NeptuneFiles::error</span></span>:<br/><a href="4-nf.html#SP1">§1</a><br/>Neptune Syntax - <a href="4-ns.html#SP5">§5</a>, <a href="4-ns.html#SP5_2">§5.2</a>, <a href="4-ns.html#SP5_3">§5.3</a>, <a href="4-ns.html#SP5_4">§5.4</a>, <a href="4-ns.html#SP5_5_1">§5.5.1</a>, <a href="4-ns.html#SP5_5_2">§5.5.2</a>, <a href="4-ns.html#SP5_5_3">§5.5.3</a>, <a href="4-ns.html#SP5_5_5">§5.5.5</a>, <a href="4-ns.html#SP5_5_8">§5.5.8</a>, <a href="4-ns.html#SP5_5_9">§5.5.9</a><br/>Macros - <a href="4-mcr.html#SP1">§1</a>, <a href="4-mcr.html#SP2">§2</a><br/>Star Templates - <a href="4-st.html#SP2">§2</a>, <a href="4-st.html#SP5">§5</a>, <a href="4-st.html#SP5_1_1">§5.1.1</a>, <a href="4-st.html#SP8">§8</a><br/>Kind Commands - <a href="4-kc.html#SP1">§1</a>, <a href="4-kc.html#SP1_3">§1.3</a>, <a href="4-kc.html#SP1_4">§1.4</a>, <a href="4-kc.html#SP1_4_1">§1.4.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">command</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</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">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</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">E</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -192,6 +192,27 @@ function togglePopup(material_id) {
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">constructor_described</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">additional_property_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">additional_property_set_described</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">additional_property_set</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">properties</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">additional_property</span></span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">additional_property_set</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">additional_property</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">attr</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">property_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">value_text</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">additional_property</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">additional_property_set</span><span class="plain-syntax"> *</span><span class="function-syntax">NeptuneSyntax::new_additional_property_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner_name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">additional_property_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">additional_property_set</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">set</span><span class="plain-syntax">-></span><span class="element-syntax">owner_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">owner_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">set</span><span class="plain-syntax">-></span><span class="element-syntax">properties</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">additional_property</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">set</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="function-syntax">NeptuneSyntax::parse_command</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">NeptuneSyntax::parse_command</span></span>:<br/>Neptune Files - <a href="4-nf.html#SP1">§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">whole_command</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">) {</span>
|
||||
|
@ -201,19 +222,26 @@ function togglePopup(material_id) {
|
|||
<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">whole_command</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"}"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-st.html#SP2" class="function-link"><span class="function-syntax">StarTemplates::recording</span></a><span class="plain-syntax">()) </span><a href="4-st.html#SP2" class="function-link"><span class="function-syntax">StarTemplates::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-mcr.html#SP1" class="function-link"><span class="function-syntax">NeptuneMacros::recording</span></a><span class="plain-syntax">()) </span><a href="4-mcr.html#SP1" class="function-link"><span class="function-syntax">NeptuneMacros::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tfp</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">constructor_described</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">constructor_described</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">additional_property_set_described</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">completed</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><a href="4-st.html#SP2" class="function-link"><span class="function-syntax">StarTemplates::recording</span></a><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-st.html#SP2" class="function-link"><span class="function-syntax">StarTemplates::record_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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">completed</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::get_last_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">whole_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">constructor_described</span><span class="plain-syntax">) {</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><span class="identifier-syntax">additional_property_set_described</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-nf.html#SP2" class="function-link"><span class="function-syntax">NeptuneFiles::error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"previous declaration not closed with '}'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">constructor_described</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">additional_property_set_described</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Regexp::create_mr</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">, </span><span class="identifier-syntax">U</span><span class="string-syntax">"invention (%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">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">, </span><span class="identifier-syntax">U</span><span class="string-syntax">"properties of (%c+) {"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">additional_property_set_described</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ns.html#SP5" class="function-link"><span class="function-syntax">NeptuneSyntax::new_additional_property_set</span></a><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">[0]);</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">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">, </span><span class="identifier-syntax">U</span><span class="string-syntax">"invention (%C+) {"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-st.html#SP2" class="function-link"><span class="function-syntax">StarTemplates::begin</span></a><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">[0], </span><span class="identifier-syntax">tfp</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">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">, </span><span class="identifier-syntax">U</span><span class="string-syntax">"macro (#%C+) {"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-mcr.html#SP1" class="function-link"><span class="function-syntax">NeptuneMacros::begin</span></a><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">[0], </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
|
@ -232,7 +260,7 @@ function togglePopup(material_id) {
|
|||
<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</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="identifier-syntax">I</span><span class="string-syntax">"constructor"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">group</span><span class="plain-syntax"> = </span><span class="constant-syntax">PROPER_CONSTRUCTOR_GRP</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">group</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="4-nf.html#SP2" class="function-link"><span class="function-syntax">NeptuneFiles::error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"must declare 'variable', 'protocol', 'base' or 'constructor'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"must declare 'variable', 'protocol', 'base' or 'constructor', or 'property'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</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">[2];</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Create a new constructor</span><span class="named-paragraph-number">5.2</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -252,25 +280,16 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_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="named-paragraph-container code-font"><a href="4-ns.html#SP5_3" class="named-paragraph-link"><span class="named-paragraph">Parse line into command and argument, divided by a colon</span><span class="named-paragraph-number">5.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Identify the command being used</span><span class="named-paragraph-number">5.4</span></a></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">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax">-></span><span class="element-syntax">operand_type</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">BOOLEAN_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5" class="named-paragraph-link"><span class="named-paragraph">Parse a boolean argument for a kind command</span><span class="named-paragraph-number">5.5</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CCM_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_6" class="named-paragraph-link"><span class="named-paragraph">Parse a CCM argument for a kind command</span><span class="named-paragraph-number">5.6</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONSTRUCTOR_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_10" class="named-paragraph-link"><span class="named-paragraph">Parse a constructor-name argument for a kind command</span><span class="named-paragraph-number">5.10</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MACRO_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_12" class="named-paragraph-link"><span class="named-paragraph">Parse a macro name argument for a kind command</span><span class="named-paragraph-number">5.12</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NUMERIC_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_9" class="named-paragraph-link"><span class="named-paragraph">Parse a numeric argument for a kind command</span><span class="named-paragraph-number">5.9</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEMPLATE_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_11" class="named-paragraph-link"><span class="named-paragraph">Parse a template name argument for a kind command</span><span class="named-paragraph-number">5.11</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_7" class="named-paragraph-link"><span class="named-paragraph">Parse a textual argument for a kind command</span><span class="named-paragraph-number">5.7</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">VOCABULARY_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_8" class="named-paragraph-link"><span class="named-paragraph">Parse a vocabulary argument for a kind command</span><span class="named-paragraph-number">5.8</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">additional_property_set_described</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Handle as an additional property setting</span><span class="named-paragraph-number">5.4</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5" class="named-paragraph-link"><span class="named-paragraph">Handle as a kind constructor setting</span><span class="named-paragraph-number">5.5</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">command</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">argument</span><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure additional_property_set is private to this section.</li><li>The structure additional_property is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>§5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Initialise the STC to a blank command</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
@ -325,16 +344,73 @@ begin with those characters, but that doesn't matter for the things we need.
|
|||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-nf.html#SP2" class="function-link"><span class="function-syntax">NeptuneFiles::error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"kind command without argument"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4" class="paragraph-anchor"></a><b>§5.4. </b>The following is clearly inefficient, but is not worth optimising. It makes
|
||||
<p class="commentary firstcommentary"><a id="SP5_4" class="paragraph-anchor"></a><b>§5.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle as an additional property setting</span><span class="named-paragraph-number">5.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">attr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NOT_APPLICABLE</span><span 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">command</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"attribute"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">attr</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</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"property"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">attr</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">attr</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-nf.html#SP2" class="function-link"><span class="function-syntax">NeptuneFiles::error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"only 'attribute' and 'property' commands are allowed here"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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">additional_property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">additional_property</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">attr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">attr</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Regexp::create_mr</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="identifier-syntax">U</span><span class="string-syntax">"(%C+?) *= *(%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">attr</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="4-nf.html#SP2" class="function-link"><span class="function-syntax">NeptuneFiles::error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"only 'property' commands can use '='"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">property_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</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">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">value_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">property_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">value_text</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">attr</span><span class="plain-syntax">)?</span><span class="identifier-syntax">I</span><span class="string-syntax">"1"</span><span class="plain-syntax">:</span><span class="identifier-syntax">I</span><span class="string-syntax">"0"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">property_name</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">attr</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_first_character</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">property_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">value_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"0"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-nf.html#SP2" class="function-link"><span class="function-syntax">NeptuneFiles::error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">whole_command</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"only 'attribute' commands can use '~'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">additional_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">additional_property_set_described</span><span class="plain-syntax">-></span><span class="element-syntax">properties</span><span class="plain-syntax">);</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">completed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5" class="paragraph-anchor"></a><b>§5.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle as a kind constructor setting</span><span class="named-paragraph-number">5.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5_1" class="named-paragraph-link"><span class="named-paragraph">Identify the command being used</span><span class="named-paragraph-number">5.5.1</span></a></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">stc</span><span class="plain-syntax">.</span><span class="element-syntax">which_kind_command</span><span class="plain-syntax">-></span><span class="element-syntax">operand_type</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">BOOLEAN_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5_2" class="named-paragraph-link"><span class="named-paragraph">Parse a boolean argument for a kind command</span><span class="named-paragraph-number">5.5.2</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CCM_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5_3" class="named-paragraph-link"><span class="named-paragraph">Parse a CCM argument for a kind command</span><span class="named-paragraph-number">5.5.3</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONSTRUCTOR_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5_7" class="named-paragraph-link"><span class="named-paragraph">Parse a constructor-name argument for a kind command</span><span class="named-paragraph-number">5.5.7</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MACRO_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5_9" class="named-paragraph-link"><span class="named-paragraph">Parse a macro name argument for a kind command</span><span class="named-paragraph-number">5.5.9</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NUMERIC_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5_6" class="named-paragraph-link"><span class="named-paragraph">Parse a numeric argument for a kind command</span><span class="named-paragraph-number">5.5.6</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEMPLATE_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5_8" class="named-paragraph-link"><span class="named-paragraph">Parse a template name argument for a kind command</span><span class="named-paragraph-number">5.5.8</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5_4" class="named-paragraph-link"><span class="named-paragraph">Parse a textual argument for a kind command</span><span class="named-paragraph-number">5.5.4</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">VOCABULARY_KCA:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-ns.html#SP5_5_5" class="named-paragraph-link"><span class="named-paragraph">Parse a vocabulary argument for a kind command</span><span class="named-paragraph-number">5.5.5</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5_1" class="paragraph-anchor"></a><b>§5.5.1. </b>The following is clearly inefficient, but is not worth optimising. It makes
|
||||
about 20 string comparisons per command, and there are about 600 commands in a
|
||||
typical run of Inform, so the total cost is about 12,000 comparisons with
|
||||
quite small strings as arguments — which is negligible for our purposes,
|
||||
so we neglect it.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Identify the command being used</span><span class="named-paragraph-number">5.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Identify the command being used</span><span class="named-paragraph-number">5.5.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -347,8 +423,8 @@ so we neglect it.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">completed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5" class="paragraph-anchor"></a><b>§5.5. </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">5.5</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5_5">§5.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5_2" class="paragraph-anchor"></a><b>§5.5.2. </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">5.5.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -356,8 +432,8 @@ 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">U</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="4-nf.html#SP2" class="function-link"><span class="function-syntax">NeptuneFiles::error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"boolean kind command takes yes/no argument"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_6" class="paragraph-anchor"></a><b>§5.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a CCM argument for a kind command</span><span class="named-paragraph-number">5.6</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5_5">§5.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5_3" class="paragraph-anchor"></a><b>§5.5.3. </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">5.5.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -371,15 +447,15 @@ so we neglect it.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">completed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_7" class="paragraph-anchor"></a><b>§5.7. </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">5.7</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5_5">§5.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5_4" class="paragraph-anchor"></a><b>§5.5.4. </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">5.5.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</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="identifier-syntax">argument</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_8" class="paragraph-anchor"></a><b>§5.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a vocabulary argument for a kind command</span><span class="named-paragraph-number">5.8</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5_5">§5.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5_5" class="paragraph-anchor"></a><b>§5.5.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a vocabulary argument for a kind command</span><span class="named-paragraph-number">5.5.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -393,15 +469,15 @@ so we neglect it.
|
|||
<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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_9" class="paragraph-anchor"></a><b>§5.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a numeric argument for a kind command</span><span class="named-paragraph-number">5.9</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5_5">§5.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5_6" class="paragraph-anchor"></a><b>§5.5.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a numeric argument for a kind command</span><span class="named-paragraph-number">5.5.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">numeric_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::atoi</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_10" class="paragraph-anchor"></a><b>§5.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a constructor-name argument for a kind command</span><span class="named-paragraph-number">5.10</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5_5">§5.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5_7" class="paragraph-anchor"></a><b>§5.5.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a constructor-name argument for a kind command</span><span class="named-paragraph-number">5.5.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -413,8 +489,8 @@ so we neglect it.
|
|||
<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">constructor_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">argument</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_11" class="paragraph-anchor"></a><b>§5.11. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a template name argument for a kind command</span><span class="named-paragraph-number">5.11</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5_5">§5.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5_8" class="paragraph-anchor"></a><b>§5.5.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse a template name argument for a kind command</span><span class="named-paragraph-number">5.5.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -424,8 +500,8 @@ so we neglect it.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">.</span><span class="element-syntax">completed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_12" class="paragraph-anchor"></a><b>§5.12. </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">5.12</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5_5">§5.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_5_9" class="paragraph-anchor"></a><b>§5.5.9. </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">5.5.9</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -435,7 +511,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">completed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">stc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5">§5</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-ns.html#SP5_5">§5.5</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-nf.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-knd.html">2</a></li><li class="progresschapter"><a href="3-dmn.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-abgtn.html">abgtn</a></li><li class="progresssection"><a href="4-nf.html">nf</a></li><li class="progresscurrent">ns</li><li class="progresssection"><a href="4-mcr.html">mcr</a></li><li class="progresssection"><a href="4-st.html">st</a></li><li class="progresssection"><a href="4-kc.html">kc</a></li><li class="progresssection"><a href="4-kc2.html">kc2</a></li><li class="progressnext"><a href="4-mcr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -74,7 +74,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ttd</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="function-syntax">StarTemplates::parse_name</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">StarTemplates::parse_name</span></span>:<br/><a href="4-st.html#SP2">§2</a><br/>Neptune Syntax - <a href="4-ns.html#SP5_11">§5.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">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">kind_template_definition</span><span class="plain-syntax"> *</span><span class="function-syntax">StarTemplates::parse_name</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">StarTemplates::parse_name</span></span>:<br/><a href="4-st.html#SP2">§2</a><br/>Neptune Syntax - <a href="4-ns.html#SP5_5_8">§5.5.8</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_template_definition</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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ttd</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_template_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">ttd</span><span class="plain-syntax">-></span><span class="element-syntax">template_name</span><span class="plain-syntax">))</span>
|
||||
|
|
|
@ -144,7 +144,7 @@ relies on adjectival meanings.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">EitherOrProperties::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">EitherOrProperties::new_nameless</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">EitherOrProperties::new_nameless</span></span>:<br/>The Model World - <a href="5-tmw.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::completion_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTIES_HAP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP3" class="function-link"><span class="function-syntax">Properties::create</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTProperties::dont_show_in_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
|
@ -239,7 +239,7 @@ around), but not to break one.
|
|||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">EitherOrProperties::get_negation</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">EitherOrProperties::get_negation</span></span>:<br/><a href="3-ep.html#SP5">§5</a><br/>Properties - <a href="3-prp.html#SP14">§14</a>, <a href="3-prp.html#SP15_3">§15.3</a>, <a href="3-prp.html#SP18">§18</a>, <a href="3-prp.html#SP20">§20</a><br/>Property Permissions - <a href="4-pp.html#SP2">§2</a><br/>Property Inferences - <a href="5-pi.html#SP5">§5</a>, <a href="5-pi.html#SP9">§9</a>, <a href="5-pi.html#SP10">§10</a><br/>The Model World - <a href="5-tmw.html#SP4_2">§4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">EitherOrProperties::get_negation</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">EitherOrProperties::get_negation</span></span>:<br/><a href="3-ep.html#SP5">§5</a><br/>Properties - <a href="3-prp.html#SP14">§14</a>, <a href="3-prp.html#SP15_3">§15.3</a>, <a href="3-prp.html#SP18">§18</a>, <a href="3-prp.html#SP20">§20</a><br/>Property Permissions - <a href="4-pp.html#SP2">§2</a><br/>Property Inferences - <a href="5-pi.html#SP5">§5</a>, <a href="5-pi.html#SP9">§9</a>, <a href="5-pi.html#SP10">§10</a><br/>The Model World - <a href="5-tmw.html#SP4_2">§4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or_data</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or_data</span><span class="plain-syntax">-></span><span class="element-syntax">negation</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -260,7 +260,7 @@ around), but not to break one.
|
|||
<span class="plain-syntax">}</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
|
||||
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">EitherOrProperties::as_adjective</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">EitherOrProperties::as_adjective</span></span>:<br/><a href="3-ep.html#SP8">§8</a><br/>Either-Or Property Adjectives - <a href="3-epa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="function-syntax">EitherOrProperties::as_adjective</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">EitherOrProperties::as_adjective</span></span>:<br/><a href="3-ep.html#SP8">§8</a><br/>Either-Or Property Adjectives - <a href="3-epa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or_data</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">"non-EO property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or_data</span><span class="plain-syntax">-></span><span class="element-syntax">as_adjective</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -268,7 +268,7 @@ around), but not to break one.
|
|||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Assertion. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EitherOrProperties::assert</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">EitherOrProperties::assert</span></span>:<br/>The Naming Thicket - <a href="5-tnt.html#SP5">§5</a>, <a href="5-tnt.html#SP9_1_4">§9.1.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EitherOrProperties::assert</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">EitherOrProperties::assert</span></span>:<br/>The Model World - <a href="5-tmw.html#SP3">§3</a><br/>The Naming Thicket - <a href="5-tnt.html#SP5">§5</a>, <a href="5-tnt.html#SP9_1_4">§9.1.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certainty</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectivalPredicates::new_atom_on_x</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ep.html#SP7" class="function-link"><span class="function-syntax">EitherOrProperties::as_adjective</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">), (</span><span class="identifier-syntax">parity</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -152,7 +152,7 @@ the property to have, and one where we just have the text of such a name.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">ValueProperties::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Inter_identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">ValueProperties::new_nameless</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ValueProperties::new_nameless</span></span>:<br/>The Model World - <a href="5-tmw.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Inter_identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"new nameless property without kind"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="3-prp.html#SP3" class="function-link"><span class="function-syntax">Properties::create</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::completion_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTIES_HAP</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inter_identifier</span><span class="plain-syntax">);</span>
|
||||
|
@ -187,7 +187,7 @@ term 1 is set to term 2.
|
|||
</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">ValueProperties::make_setting_bp</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ValueProperties::make_setting_bp</span></span>:<br/>Properties - <a href="3-prp.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ValueProperties::make_setting_bp</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ValueProperties::make_setting_bp</span></span>:<br/>Properties - <a href="3-prp.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or_data</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-spr2.html#SP4" class="function-link"><span class="function-syntax">SettingPropertyRelations::find_set_property_BP</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="3-spr2.html#SP3" class="function-link"><span class="function-syntax">SettingPropertyRelations::make_set_property_BP</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
|
@ -205,12 +205,12 @@ term 1 is set to term 2.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">ValueProperties::kind</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ValueProperties::kind</span></span>:<br/>Instances - <a href="2-ins.html#SP8">§8</a><br/>Properties - <a href="3-prp.html#SP14">§14</a>, <a href="3-prp.html#SP18">§18</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">§8</a>, <a href="3-spr2.html#SP9">§9</a><br/>Measurements - <a href="3-msr.html#SP9_2">§9.2</a><br/>Property Inferences - <a href="5-pi.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">ValueProperties::kind</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">ValueProperties::kind</span></span>:<br/>Instances - <a href="2-ins.html#SP8">§8</a><br/>Properties - <a href="3-prp.html#SP14">§14</a>, <a href="3-prp.html#SP18">§18</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">§8</a>, <a href="3-spr2.html#SP9">§9</a><br/>Measurements - <a href="3-msr.html#SP9_2">§9.2</a><br/>Property Inferences - <a href="5-pi.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or_data</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> for better type-checking Problems</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">value_data</span><span class="plain-syntax">-></span><span class="element-syntax">property_value_kind</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">ValueProperties::set_kind</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">ValueProperties::set_kind</span></span>:<br/><a href="3-vp.html#SP7">§7</a><br/>Properties - <a href="3-prp.html#SP3_7">§3.7</a><br/>Kind Subjects - <a href="4-ks.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ValueProperties::set_kind</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ValueProperties::set_kind</span></span>:<br/><a href="3-vp.html#SP7">§7</a><br/>Properties - <a href="3-prp.html#SP3_7">§3.7</a><br/>Kind Subjects - <a href="4-ks.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to set null kind"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or_data</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::Behaviour::definite</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">RTProperties::can_be_compiled</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">))) {</span>
|
||||
|
@ -248,7 +248,7 @@ value property whose value is always a weight.
|
|||
</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">ValueProperties::make_coincide_with_kind</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ValueProperties::make_coincide_with_kind</span></span>:<br/>Properties - <a href="3-prp.html#SP3_4">§3.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ValueProperties::make_coincide_with_kind</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">ValueProperties::make_coincide_with_kind</span></span>:<br/>Properties - <a href="3-prp.html#SP3_4">§3.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or_data</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-vp.html#SP6" class="function-link"><span class="function-syntax">ValueProperties::set_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_grammatical_gender</span><span class="plain-syntax">)) </span><span class="identifier-syntax">P_grammatical_gender</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">;</span>
|
||||
|
@ -271,7 +271,7 @@ value property whose value is always a weight.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">value_data</span><span class="plain-syntax">-></span><span class="element-syntax">relation_whose_state_this_stores</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">ValueProperties::get_stored_relation</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">ValueProperties::get_stored_relation</span></span>:<br/>Property Inferences - <a href="5-pi.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">ValueProperties::get_stored_relation</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">ValueProperties::get_stored_relation</span></span>:<br/>Property Inferences - <a href="5-pi.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or_data</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"non-value property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">value_data</span><span class="plain-syntax">-></span><span class="element-syntax">relation_whose_state_this_stores</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -279,7 +279,7 @@ value property whose value is always a weight.
|
|||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Assertion. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ValueProperties::assert</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">ValueProperties::assert</span></span>:<br/>Indefinite Appearance - <a href="5-ia.html#SP1">§1</a>, <a href="5-ia.html#SP2">§2</a><br/>The Naming Thicket - <a href="5-tnt.html#SP6">§6</a>, <a href="5-tnt.html#SP7">§7</a>, <a href="5-tnt.html#SP9_1_2_1">§9.1.2.1</a>, <a href="5-tnt.html#SP9_1_2_2">§9.1.2.2</a>, <a href="5-tnt.html#SP9_1_3">§9.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ValueProperties::assert</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">ValueProperties::assert</span></span>:<br/>Indefinite Appearance - <a href="5-ia.html#SP1">§1</a>, <a href="5-ia.html#SP2">§2</a><br/>The Model World - <a href="5-tmw.html#SP3">§3</a><br/>The Naming Thicket - <a href="5-tnt.html#SP6">§6</a>, <a href="5-tnt.html#SP7">§7</a>, <a href="5-tnt.html#SP9_1_2_1">§9.1.2.1</a>, <a href="5-tnt.html#SP9_1_2_2">§9.1.2.2</a>, <a href="5-tnt.html#SP9_1_3">§9.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certainty</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Propositions::Abstract::to_set_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ap.html#SP2" class="function-link"><span class="function-syntax">Assert::true_about</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">certainty</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -117,7 +117,7 @@ a little trickier than for other subject families:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::from_kind</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">KindSubjects::from_kind</span></span>:<br/><a href="4-ks.html#SP4">§4</a>, <a href="4-ks.html#SP10">§10</a><br/>Knowledge Module - <a href="1-km.html#SP4">§4</a><br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">§6.5.2</a>, <a href="1-ap.html#SP9">§9</a><br/>Instances - <a href="2-ins.html#SP11">§11</a><br/>Setting Property Relation - <a href="3-spr2.html#SP3">§3</a><br/>Inference Subjects - <a href="4-is.html#SP14">§14</a><br/>Instance Subjects - <a href="4-is2.html#SP1">§1</a><br/>Indefinite Appearance - <a href="5-ia.html#SP1">§1</a><br/>The Naming Thicket - <a href="5-tnt.html#SP9_1">§9.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::from_kind</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">KindSubjects::from_kind</span></span>:<br/><a href="4-ks.html#SP4">§4</a>, <a href="4-ks.html#SP10">§10</a><br/>Knowledge Module - <a href="1-km.html#SP4">§4</a><br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">§6.5.2</a>, <a href="1-ap.html#SP9">§9</a><br/>Instances - <a href="2-ins.html#SP11">§11</a><br/>Setting Property Relation - <a href="3-spr2.html#SP3">§3</a><br/>Inference Subjects - <a href="4-is.html#SP14">§14</a><br/>Instance Subjects - <a href="4-is2.html#SP1">§1</a><br/>Indefinite Appearance - <a href="5-ia.html#SP1">§1</a><br/>The Model World - <a href="5-tmw.html#SP3">§3</a><br/>The Naming Thicket - <a href="5-tnt.html#SP9_1">§9.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-></span><span class="identifier-syntax">construct</span><span class="plain-syntax">-></span><span class="identifier-syntax">base_as_infs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -125,6 +125,51 @@ spatial-model plugin does), it must do so during Stage III, not Stage II.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Assertions::Implications::consider_all</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tmw.html#SP1" class="function-link"><span class="function-syntax">World::ask_plugins_at_stage</span></a><span class="plain-syntax">(</span><span class="constant-syntax">WORLD_STAGE_II</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tmw.html#SP1" class="function-link"><span class="function-syntax">World::ask_plugins_at_stage</span></a><span class="plain-syntax">(</span><span class="constant-syntax">WORLD_STAGE_III</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">additional_property_set</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</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">set</span><span class="plain-syntax">, </span><span class="identifier-syntax">additional_property_set</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">O</span><span class="plain-syntax"> = </span><span class="identifier-syntax">set</span><span class="plain-syntax">-></span><span class="identifier-syntax">owner_name</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::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><k-kind></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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">additional_property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">additional_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">set</span><span class="plain-syntax">-></span><span class="identifier-syntax">properties</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">"I should give kind %u the prop %S = %S\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">property_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">value_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">attr</span><span class="plain-syntax">) </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="3-ep.html#SP4" class="function-link"><span class="function-syntax">EitherOrProperties::new_nameless</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">property_name</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">P</span><span class="plain-syntax"> = </span><a href="3-vp.html#SP4" class="function-link"><span class="function-syntax">ValueProperties::new_nameless</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">property_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_pair</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterValuePairs::number_from_I6_notation</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">value_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">InterValuePairs::is_undef</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">O</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">property_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">value_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">Untestable</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"A Neptune file inside one of the kits you're using says "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that the kind '%1' should have the Inter-level property '%2' "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"set to '%3', but I can't read that value."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">InterValuePairs::to_number</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">attr</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">parity</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">V</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">parity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ep.html#SP8" class="function-link"><span class="function-syntax">EitherOrProperties::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">parity</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-vp.html#SP9" class="function-link"><span class="function-syntax">ValueProperties::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="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">Problems::quote_stream</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">O</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">Untestable</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"A Neptune file inside one of the kits you're using says "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that the kind '%1' should have certain Inter-level properties, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"but no such kind seems to exist."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Stage IV. </b>This is for consistency checks or to store away useful data, but where
|
||||
|
|
|
@ -1,44 +1,44 @@
|
|||
Total memory consumption was 139597K = 136 MB
|
||||
Total memory consumption was 141958K = 139 MB
|
||||
|
||||
---- was used for 2127253 objects, in 374807 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
30.2% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes
|
||||
19.4% text_stream_array 4926 x 100 = 492600 objects, 27743232 bytes
|
||||
17.7% linked_list 45406 objects, 25427360 bytes
|
||||
9.9% inter_symbol_array 134 x 1024 = 137216 objects, 14274752 bytes
|
||||
9.7% inter_error_stash_array 106 x 1024 = 108544 objects, 13897024 bytes
|
||||
7.4% parse_node 133803 objects, 10704240 bytes
|
||||
5.3% verb_conjugation 164 objects, 7610912 bytes
|
||||
4.0% parse_node_annotation_array 357 x 500 = 178500 objects, 5723424 bytes
|
||||
3.1% scan_directory 1091 objects, 4503648 bytes
|
||||
29.7% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes
|
||||
19.0% text_stream_array 4926 x 100 = 492600 objects, 27743232 bytes
|
||||
17.4% linked_list 45406 objects, 25427360 bytes
|
||||
9.8% inter_symbol_array 134 x 1024 = 137216 objects, 14274752 bytes
|
||||
9.5% inter_error_stash_array 106 x 1024 = 108544 objects, 13897024 bytes
|
||||
7.3% parse_node 133803 objects, 10704240 bytes
|
||||
5.2% verb_conjugation 164 objects, 7610912 bytes
|
||||
3.9% parse_node_annotation_array 357 x 500 = 178500 objects, 5723424 bytes
|
||||
3.0% scan_directory 1091 objects, 4503648 bytes
|
||||
2.4% pcalc_prop_array 26 x 1000 = 26000 objects, 3536832 bytes
|
||||
2.2% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
|
||||
1.9% kind_array 68 x 1000 = 68000 objects, 2722176 bytes
|
||||
1.5% inter_schema_token 14164 objects, 2152928 bytes
|
||||
1.8% kind_array 68 x 1000 = 68000 objects, 2722176 bytes
|
||||
1.4% inter_schema_token 14164 objects, 2152928 bytes
|
||||
1.4% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
|
||||
1.3% package_request 21353 objects, 1879064 bytes
|
||||
1.2% package_request 21353 objects, 1879064 bytes
|
||||
1.2% vocabulary_entry_array 163 x 100 = 16300 objects, 1830816 bytes
|
||||
1.1% dict_entry_array 501 x 100 = 50100 objects, 1619232 bytes
|
||||
1.0% inter_symbols_table 26887 objects, 1505672 bytes
|
||||
1.0% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
|
||||
1.0% i6_schema_array 24 x 100 = 2400 objects, 1440768 bytes
|
||||
0.9% inter_package 26887 objects, 1290576 bytes
|
||||
0.9% i6_schema_array 24 x 100 = 2400 objects, 1440768 bytes
|
||||
0.8% inter_package 26887 objects, 1290576 bytes
|
||||
0.7% map_data 677 objects, 1137360 bytes
|
||||
0.7% id_body 980 objects, 1121120 bytes
|
||||
0.7% adjective_meaning 208 objects, 1030016 bytes
|
||||
0.7% inter_schema_node 9062 objects, 1014944 bytes
|
||||
0.6% inter_schema_node 9062 objects, 1014944 bytes
|
||||
0.6% excerpt_meaning 3165 objects, 987480 bytes
|
||||
0.6% production 3985 objects, 924520 bytes
|
||||
0.6% ptoken 8652 objects, 899808 bytes
|
||||
0.6% grammatical_usage 3648 objects, 875520 bytes
|
||||
0.6% individual_form 2581 objects, 867216 bytes
|
||||
0.5% individual_form 2581 objects, 867216 bytes
|
||||
0.4% unary_predicate_array 17 x 1000 = 17000 objects, 680544 bytes
|
||||
0.3% local_variable_array 49 x 100 = 4900 objects, 471968 bytes
|
||||
0.2% verb_usage 1148 objects, 394912 bytes
|
||||
0.2% rule 478 objects, 374752 bytes
|
||||
0.2% dictionary 7767 objects, 372816 bytes
|
||||
0.2% verb_form 388 objects, 350752 bytes
|
||||
0.2% noun 2395 objects, 287400 bytes
|
||||
0.1% noun 2395 objects, 287400 bytes
|
||||
0.1% compilation_subtask 3388 objects, 271040 bytes
|
||||
0.1% inference_subject 672 objects, 263424 bytes
|
||||
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
|
||||
|
@ -88,8 +88,8 @@ Total memory consumption was 139597K = 136 MB
|
|||
---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes
|
||||
---- parsing_data 677 objects, 37912 bytes
|
||||
---- production_list 627 objects, 35112 bytes
|
||||
---- regions_data 677 objects, 32496 bytes
|
||||
---- counting_data 677 objects, 32496 bytes
|
||||
---- regions_data 677 objects, 32496 bytes
|
||||
---- property_permission 96 objects, 31488 bytes
|
||||
---- stack_frame_box 307 objects, 29472 bytes
|
||||
---- verb_sense 407 objects, 29304 bytes
|
||||
|
@ -111,8 +111,8 @@ Total memory consumption was 139597K = 136 MB
|
|||
---- pcalc_prop_deferral 86 objects, 17888 bytes
|
||||
---- to_phrase_request 63 objects, 17136 bytes
|
||||
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
|
||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||
---- md_doc_state 3 objects, 15720 bytes
|
||||
---- adjective 140 objects, 15680 bytes
|
||||
---- JSON_value 174 objects, 15312 bytes
|
||||
|
@ -141,22 +141,22 @@ Total memory consumption was 139597K = 136 MB
|
|||
---- explicit_action_array 1 x 100 objects, 4832 bytes
|
||||
---- value_property_data 86 objects, 4816 bytes
|
||||
---- compatibility_specification 100 objects, 4800 bytes
|
||||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- method_set 144 objects, 4608 bytes
|
||||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- command_line_switch 56 objects, 4480 bytes
|
||||
---- semver_range 42 objects, 4368 bytes
|
||||
---- use_option 31 objects, 4216 bytes
|
||||
---- parse_node_annotation_type 124 objects, 3968 bytes
|
||||
---- either_or_property_data 62 objects, 3968 bytes
|
||||
---- definition 48 objects, 3456 bytes
|
||||
---- submodule_request 86 objects, 3440 bytes
|
||||
---- property_setting_bp_data 86 objects, 3440 bytes
|
||||
---- submodule_request 86 objects, 3440 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- target_vm 21 objects, 3024 bytes
|
||||
---- JSON_type 39 objects, 2808 bytes
|
||||
---- JSON_single_requirement 55 objects, 2640 bytes
|
||||
---- part_of_inference_data 79 objects, 2528 bytes
|
||||
---- parentage_inference_data 79 objects, 2528 bytes
|
||||
---- part_of_inference_data 79 objects, 2528 bytes
|
||||
---- kind_constructor_instance_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- equation_symbol 30 objects, 2400 bytes
|
||||
|
@ -182,8 +182,8 @@ Total memory consumption was 139597K = 136 MB
|
|||
---- runtime_kind_structure 13 objects, 1040 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
---- web_md 7 objects, 1008 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- pipeline_stage 20 objects, 960 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- JSON_pair_requirement 29 objects, 928 bytes
|
||||
---- compiled_documentation 3 objects, 864 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
|
@ -197,52 +197,52 @@ Total memory consumption was 139597K = 136 MB
|
|||
---- implication 13 objects, 624 bytes
|
||||
---- chapter_md 7 objects, 616 bytes
|
||||
---- code_generation 1 object, 576 bytes
|
||||
---- inter_annotation_form 14 objects, 560 bytes
|
||||
---- module 7 objects, 560 bytes
|
||||
---- inter_annotation_form 14 objects, 560 bytes
|
||||
---- generated_segment 14 objects, 560 bytes
|
||||
---- inter_warehouse_room 10 objects, 560 bytes
|
||||
---- rulebook_outcome 17 objects, 544 bytes
|
||||
---- indexing_category 6 objects, 528 bytes
|
||||
---- markdown_variation 3 objects, 528 bytes
|
||||
---- small_word_set 11 objects, 528 bytes
|
||||
---- indexing_category 6 objects, 528 bytes
|
||||
---- IFM_example 4 objects, 512 bytes
|
||||
---- i6_memory_setting 15 objects, 480 bytes
|
||||
---- equation 4 objects, 480 bytes
|
||||
---- i6_memory_setting 15 objects, 480 bytes
|
||||
---- bp_family 14 objects, 448 bytes
|
||||
---- inbuild_genre 8 objects, 448 bytes
|
||||
---- source_file 5 objects, 440 bytes
|
||||
---- inference_family 11 objects, 440 bytes
|
||||
---- article_usage 8 objects, 384 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- module_request 8 objects, 320 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- tree_inventory 1 object, 320 bytes
|
||||
---- module_request 8 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- cached_kind_declaration 8 objects, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- inter_pipeline 1 object, 312 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- compilation_unit 5 objects, 280 bytes
|
||||
---- contents_entry 7 objects, 280 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- compilation_unit 5 objects, 280 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- kit_dependency 5 objects, 240 bytes
|
||||
---- inform_project 1 object, 232 bytes
|
||||
---- local_block_value 4 objects, 224 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- index_reference 4 objects, 224 bytes
|
||||
---- index_lemma 4 objects, 224 bytes
|
||||
---- test_scenario 1 object, 216 bytes
|
||||
---- local_block_value 4 objects, 224 bytes
|
||||
---- cd_volume 3 objects, 216 bytes
|
||||
---- test_scenario 1 object, 216 bytes
|
||||
---- release_instructions 1 object, 208 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- attachment_instruction 5 objects, 200 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- code_generator 5 objects, 200 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- element_activation 6 objects, 192 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- imperative_defn_family 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- cd_pageset 3 objects, 144 bytes
|
||||
---- inbuild_nest 3 objects, 120 bytes
|
||||
---- inform_language 1 object, 104 bytes
|
||||
|
@ -250,37 +250,37 @@ Total memory consumption was 139597K = 136 MB
|
|||
---- group_together_function 2 objects, 80 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- article 2 objects, 80 bytes
|
||||
---- figures_data 1 object, 56 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- figures_data 1 object, 56 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- I6_generation_data 1 object, 48 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- inform_kit_ittt 1 object, 48 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- I6_generation_data 1 object, 48 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- by_function_bp_data 1 object, 40 bytes
|
||||
---- target_pragma_setting 1 object, 40 bytes
|
||||
---- by_function_bp_data 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
|
||||
99.9% was used for memory not allocated for objects:
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
62.3% text stream storage 89198656 bytes in 512697 claims
|
||||
3.8% dictionary storage 5497920 bytes in 7767 claims
|
||||
63.0% text stream storage 91616632 bytes in 513052 claims
|
||||
3.7% dictionary storage 5497920 bytes in 7767 claims
|
||||
---- sorting 2624 bytes in 531 claims
|
||||
5.0% source text 7200000 bytes in 3 claims
|
||||
7.5% source text details 10800000 bytes in 2 claims
|
||||
4.9% source text 7200000 bytes in 3 claims
|
||||
7.4% source text details 10800000 bytes in 2 claims
|
||||
0.1% documentation fragments 262144 bytes in 1 claim
|
||||
---- linguistic stock array 81920 bytes in 2 claims
|
||||
---- small word set array 105600 bytes in 22 claims
|
||||
3.1% inter symbols storage 4572416 bytes in 28261 claims
|
||||
11.7% inter bytecode storage 16757556 bytes in 15 claims
|
||||
4.3% inter links storage 6222976 bytes in 11 claims
|
||||
11.5% inter bytecode storage 16757556 bytes in 15 claims
|
||||
4.2% inter links storage 6222976 bytes in 11 claims
|
||||
0.1% inter tree location list storage 191232 bytes in 32 claims
|
||||
1.2% instance-of-kind counting 1731856 bytes in 1 claim
|
||||
1.1% instance-of-kind counting 1731856 bytes in 1 claim
|
||||
---- compilation workspace for objects 21936 bytes in 25 claims
|
||||
---- lists for type-checking invocations 16000 bytes in 1 claim
|
||||
---- code generation workspace for objects 3528 bytes in 19 claims
|
||||
0.1% emitter array storage 281184 bytes in 2006 claims
|
||||
|
||||
-136.-5% was overhead - -195255408 bytes = -190679K = -186 MB
|
||||
-134.-3% was overhead - -195255408 bytes = -190679K = -186 MB
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
100.0% in inform7 run
|
||||
67.8% in compilation to Inter
|
||||
46.3% in //Sequence::undertake_queued_tasks//
|
||||
67.6% in compilation to Inter
|
||||
45.6% in //Sequence::undertake_queued_tasks//
|
||||
4.3% in //MajorNodes::pre_pass//
|
||||
3.6% in //MajorNodes::pass_1//
|
||||
1.8% in //ImperativeDefinitions::assess_all//
|
||||
3.5% in //MajorNodes::pass_1//
|
||||
2.1% in //RTPhrasebook::compile_entries//
|
||||
1.7% in //ImperativeDefinitions::assess_all//
|
||||
1.4% in //RTKindConstructors::compile//
|
||||
1.4% in //RTPhrasebook::compile_entries//
|
||||
1.0% in //Sequence::lint_inter//
|
||||
0.7% in //ImperativeDefinitions::compile_first_block//
|
||||
0.7% in //Sequence::undertake_queued_tasks//
|
||||
|
@ -15,15 +15,15 @@
|
|||
0.3% in //World::stage_V//
|
||||
4.7% not specifically accounted for
|
||||
27.3% in running Inter pipeline
|
||||
9.1% in step 14/15: generate inform6 -> auto.inf
|
||||
6.9% in step 5/15: load-binary-kits
|
||||
5.8% in step 6/15: make-synoptic-module
|
||||
1.8% in step 9/15: make-identifiers-unique
|
||||
8.9% in step 14/15: generate inform6 -> auto.inf
|
||||
6.8% in step 5/15: load-binary-kits
|
||||
5.7% in step 6/15: make-synoptic-module
|
||||
1.7% in step 9/15: make-identifiers-unique
|
||||
0.3% in step 11/15: eliminate-redundant-labels
|
||||
0.3% in step 12/15: eliminate-redundant-operations
|
||||
0.3% in step 4/15: compile-splats
|
||||
0.3% in step 7/15: shorten-wiring
|
||||
0.3% in step 8/15: detect-indirect-calls
|
||||
1.8% not specifically accounted for
|
||||
4.0% in supervisor
|
||||
2.2% not specifically accounted for
|
||||
4.3% in supervisor
|
||||
0.8% not specifically accounted for
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture16Kit",
|
||||
"version": "10.2.0-beta+6X18"
|
||||
"version": "10.2.0-beta+6X19"
|
||||
},
|
||||
"compatibility": "16-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture32Kit",
|
||||
"version": "10.2.0-beta+6X18"
|
||||
"version": "10.2.0-beta+6X19"
|
||||
},
|
||||
"compatibility": "32-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "BasicInformKit",
|
||||
"version": "10.2.0-beta+6X18"
|
||||
"version": "10.2.0-beta+6X19"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "CommandParserKit",
|
||||
"version": "10.2.0-beta+6X18"
|
||||
"version": "10.2.0-beta+6X19"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "EnglishLanguageKit",
|
||||
"version": "10.2.0-beta+6X18"
|
||||
"version": "10.2.0-beta+6X19"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "WorldModelKit",
|
||||
"version": "10.2.0-beta+6X18"
|
||||
"version": "10.2.0-beta+6X19"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -66,6 +66,51 @@ void World::stages_II_and_III(void) {
|
|||
Assertions::Implications::consider_all(infs);
|
||||
World::ask_plugins_at_stage(WORLD_STAGE_II);
|
||||
World::ask_plugins_at_stage(WORLD_STAGE_III);
|
||||
additional_property_set *set;
|
||||
LOOP_OVER(set, additional_property_set) {
|
||||
text_stream *O = set->owner_name;
|
||||
wording W = Feeds::feed_text(O);
|
||||
if (<k-kind>(W)) {
|
||||
kind *K = <<rp>>;
|
||||
additional_property *ap;
|
||||
LOOP_OVER_LINKED_LIST(ap, additional_property, set->properties) {
|
||||
LOG("I should give kind %u the prop %S = %S\n",
|
||||
K, ap->property_name, ap->value_text);
|
||||
property *P;
|
||||
if (ap->attr) P = EitherOrProperties::new_nameless(ap->property_name);
|
||||
else P = ValueProperties::new_nameless(ap->property_name, K_value);
|
||||
inter_pair val = InterValuePairs::number_from_I6_notation(ap->value_text);
|
||||
if (InterValuePairs::is_undef(val)) {
|
||||
Problems::quote_stream(1, O);
|
||||
Problems::quote_stream(2, ap->property_name);
|
||||
Problems::quote_stream(3, ap->value_text);
|
||||
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(Untestable));
|
||||
Problems::issue_problem_segment(
|
||||
"A Neptune file inside one of the kits you're using says "
|
||||
"that the kind '%1' should have the Inter-level property '%2' "
|
||||
"set to '%3', but I can't read that value.");
|
||||
Problems::issue_problem_end();
|
||||
}
|
||||
int V = (int) InterValuePairs::to_number(val);
|
||||
if (ap->attr) {
|
||||
int parity = TRUE;
|
||||
if (V == 0) parity = FALSE;
|
||||
EitherOrProperties::assert(P, KindSubjects::from_kind(K), parity, LIKELY_CE);
|
||||
} else {
|
||||
parse_node *R = Rvalues::from_int(V, EMPTY_WORDING);
|
||||
ValueProperties::assert(P, KindSubjects::from_kind(K), R, CERTAIN_CE);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Problems::quote_stream(1, O);
|
||||
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(Untestable));
|
||||
Problems::issue_problem_segment(
|
||||
"A Neptune file inside one of the kits you're using says "
|
||||
"that the kind '%1' should have certain Inter-level properties, "
|
||||
"but no such kind seems to exist.");
|
||||
Problems::issue_problem_end();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@h Stage IV.
|
||||
|
|
|
@ -22,6 +22,8 @@ which use this module:
|
|||
@e kind_constructor_instance_rule_CLASS
|
||||
@e unit_sequence_CLASS
|
||||
@e star_invention_CLASS
|
||||
@e additional_property_CLASS
|
||||
@e additional_property_set_CLASS
|
||||
|
||||
=
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(dimensional_rule, 100)
|
||||
|
@ -36,6 +38,8 @@ DECLARE_CLASS_ALLOCATED_IN_ARRAYS(kind_constructor_instance, 100)
|
|||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(kind_constructor_instance_rule, 100)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(unit_sequence, 50)
|
||||
DECLARE_CLASS(star_invention)
|
||||
DECLARE_CLASS(additional_property)
|
||||
DECLARE_CLASS(additional_property_set)
|
||||
|
||||
@ Like all modules, this one must define a |start| and |end| function:
|
||||
|
||||
|
|
|
@ -253,4 +253,3 @@ int KindCommands::parse_literal_number(text_stream *S, int *bad) {
|
|||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
@ -129,6 +129,27 @@ Each command is read in as text, parsed and stored into a modest structure.
|
|||
|
||||
=
|
||||
kind_constructor *constructor_described = NULL;
|
||||
additional_property_set *additional_property_set_described = NULL;
|
||||
|
||||
typedef struct additional_property_set {
|
||||
struct text_stream *owner_name;
|
||||
struct linked_list *properties; /* of |additional_property| */
|
||||
CLASS_DEFINITION
|
||||
} additional_property_set;
|
||||
|
||||
typedef struct additional_property {
|
||||
int attr;
|
||||
struct text_stream *property_name;
|
||||
struct text_stream *value_text;
|
||||
CLASS_DEFINITION
|
||||
} additional_property;
|
||||
|
||||
additional_property_set *NeptuneSyntax::new_additional_property_set(text_stream *owner_name) {
|
||||
additional_property_set *set = CREATE(additional_property_set);
|
||||
set->owner_name = Str::duplicate(owner_name);
|
||||
set->properties = NEW_LINKED_LIST(additional_property);
|
||||
return set;
|
||||
}
|
||||
|
||||
single_kind_command NeptuneSyntax::parse_command(text_stream *whole_command,
|
||||
text_file_position *tfp) {
|
||||
|
@ -138,19 +159,26 @@ single_kind_command NeptuneSyntax::parse_command(text_stream *whole_command,
|
|||
if (Str::eq(whole_command, I"}")) {
|
||||
if (StarTemplates::recording()) StarTemplates::end(whole_command, tfp);
|
||||
else if (NeptuneMacros::recording()) NeptuneMacros::end(tfp);
|
||||
else constructor_described = NULL;
|
||||
else {
|
||||
constructor_described = NULL;
|
||||
additional_property_set_described = NULL;
|
||||
}
|
||||
stc.completed = TRUE;
|
||||
} else if (StarTemplates::recording()) {
|
||||
StarTemplates::record_line(whole_command, tfp);
|
||||
stc.completed = TRUE;
|
||||
} else if (Str::get_last_char(whole_command) == '{') {
|
||||
if (constructor_described) {
|
||||
if ((constructor_described) || (additional_property_set_described)) {
|
||||
NeptuneFiles::error(whole_command,
|
||||
I"previous declaration not closed with '}'", tfp);
|
||||
constructor_described = NULL;
|
||||
additional_property_set_described = NULL;
|
||||
}
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, whole_command, U"invention (%C+) {")) {
|
||||
if (Regexp::match(&mr, whole_command, U"properties of (%c+) {")) {
|
||||
additional_property_set_described =
|
||||
NeptuneSyntax::new_additional_property_set(mr.exp[0]);
|
||||
} else if (Regexp::match(&mr, whole_command, U"invention (%C+) {")) {
|
||||
StarTemplates::begin(mr.exp[0], tfp);
|
||||
} else if (Regexp::match(&mr, whole_command, U"macro (#%C+) {")) {
|
||||
NeptuneMacros::begin(mr.exp[0], tfp);
|
||||
|
@ -169,7 +197,7 @@ single_kind_command NeptuneSyntax::parse_command(text_stream *whole_command,
|
|||
else if (Str::eq(mr.exp[1], I"constructor")) group = PROPER_CONSTRUCTOR_GRP;
|
||||
if (group < 0)
|
||||
NeptuneFiles::error(whole_command,
|
||||
I"must declare 'variable', 'protocol', 'base' or 'constructor'", tfp);
|
||||
I"must declare 'variable', 'protocol', 'base' or 'constructor', or 'property'", tfp);
|
||||
else {
|
||||
text_stream *name = mr.exp[2];
|
||||
@<Create a new constructor@>;
|
||||
|
@ -189,21 +217,11 @@ single_kind_command NeptuneSyntax::parse_command(text_stream *whole_command,
|
|||
TEMPORARY_TEXT(argument)
|
||||
|
||||
@<Parse line into command and argument, divided by a colon@>;
|
||||
|
||||
@<Identify the command being used@>;
|
||||
|
||||
switch(stc.which_kind_command->operand_type) {
|
||||
case BOOLEAN_KCA: @<Parse a boolean argument for a kind command@>; break;
|
||||
case CCM_KCA: @<Parse a CCM argument for a kind command@>; break;
|
||||
case CONSTRUCTOR_KCA: @<Parse a constructor-name argument for a kind command@>; break;
|
||||
case MACRO_KCA: @<Parse a macro name argument for a kind command@>; break;
|
||||
case NUMERIC_KCA: @<Parse a numeric argument for a kind command@>; break;
|
||||
case TEMPLATE_KCA: @<Parse a template name argument for a kind command@>; break;
|
||||
case TEXT_KCA: @<Parse a textual argument for a kind command@>; break;
|
||||
case VOCABULARY_KCA: @<Parse a vocabulary argument for a kind command@>; break;
|
||||
}
|
||||
if (additional_property_set_described) @<Handle as an additional property setting@>
|
||||
else @<Handle as a kind constructor setting@>;
|
||||
DISCARD_TEXT(command)
|
||||
DISCARD_TEXT(argument)
|
||||
|
||||
}
|
||||
return stc;
|
||||
}
|
||||
|
@ -250,6 +268,55 @@ begin with those characters, but that doesn't matter for the things we need.
|
|||
} else {
|
||||
NeptuneFiles::error(whole_command, I"kind command without argument", tfp);
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
|
||||
@<Handle as an additional property setting@> =
|
||||
int attr = NOT_APPLICABLE;
|
||||
if (Str::eq(command, I"attribute")) attr = TRUE;
|
||||
if (Str::eq(command, I"property")) attr = FALSE;
|
||||
if (attr == NOT_APPLICABLE) {
|
||||
NeptuneFiles::error(whole_command,
|
||||
I"only 'attribute' and 'property' commands are allowed here", tfp);
|
||||
} else {
|
||||
additional_property *ap = CREATE(additional_property);
|
||||
ap->attr = attr;
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, argument, U"(%C+?) *= *(%c+)")) {
|
||||
if (attr)
|
||||
NeptuneFiles::error(whole_command,
|
||||
I"only 'property' commands can use '='", tfp);
|
||||
ap->property_name = Str::duplicate(mr.exp[0]);
|
||||
ap->value_text = Str::duplicate(mr.exp[1]);
|
||||
} else {
|
||||
ap->property_name = Str::duplicate(argument);
|
||||
ap->value_text = (attr)?I"1":I"0";
|
||||
}
|
||||
if (Str::get_first_char(ap->property_name) == '~') {
|
||||
if (attr) {
|
||||
Str::delete_first_character(ap->property_name);
|
||||
ap->value_text = I"0";
|
||||
} else {
|
||||
NeptuneFiles::error(whole_command,
|
||||
I"only 'attribute' commands can use '~'", tfp);
|
||||
}
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
ADD_TO_LINKED_LIST(ap, additional_property, additional_property_set_described->properties);
|
||||
}
|
||||
stc.completed = TRUE;
|
||||
|
||||
@<Handle as a kind constructor setting@> =
|
||||
@<Identify the command being used@>;
|
||||
switch(stc.which_kind_command->operand_type) {
|
||||
case BOOLEAN_KCA: @<Parse a boolean argument for a kind command@>; break;
|
||||
case CCM_KCA: @<Parse a CCM argument for a kind command@>; break;
|
||||
case CONSTRUCTOR_KCA: @<Parse a constructor-name argument for a kind command@>; break;
|
||||
case MACRO_KCA: @<Parse a macro name argument for a kind command@>; break;
|
||||
case NUMERIC_KCA: @<Parse a numeric argument for a kind command@>; break;
|
||||
case TEMPLATE_KCA: @<Parse a template name argument for a kind command@>; break;
|
||||
case TEXT_KCA: @<Parse a textual argument for a kind command@>; break;
|
||||
case VOCABULARY_KCA: @<Parse a vocabulary argument for a kind command@>; break;
|
||||
}
|
||||
|
||||
@ The following is clearly inefficient, but is not worth optimising. It makes
|
||||
about 20 string comparisons per command, and there are about 600 commands in a
|
||||
|
|
Loading…
Reference in a new issue