1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-05-05 02:28:34 +03:00

Fix for Jira bug I7-2124

This commit is contained in:
Graham Nelson 2022-05-24 21:28:01 +01:00
parent 4b7ad580b7
commit a79b56f241
16 changed files with 154 additions and 102 deletions

View file

@ -1,6 +1,6 @@
# Inform 7 # Inform 7
v10.1.0-beta+6V12 'Krypton' (23 May 2022) v10.1.0-beta+6V13 'Krypton' (24 May 2022)
## About Inform 7 ## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: beta Prerelease: beta
Build Date: 23 May 2022 Build Date: 24 May 2022
Build Number: 6V12 Build Number: 6V13

View file

@ -155,7 +155,7 @@ outermost box, that is, the top level of the hierarchy.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">pack</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">package_head</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">pack</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">package_head</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">InterPackage::tree</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">InterPackage::tree</span></span>:<br/>Bookmarks - <a href="2-bkm.html#SP5">&#167;5</a><br/>The Warehouse - <a href="2-tw.html#SP5">&#167;5</a><br/>Symbols - <a href="2-sym.html#SP20">&#167;20</a><br/>The Wiring - <a href="2-tw2.html#SP12">&#167;12</a><br/>Transmigration - <a href="2-trn.html#SP3_1">&#167;3.1</a>, <a href="2-trn.html#SP4_2_2">&#167;4.2.2</a><br/>Inter in Text Files - <a href="3-iitf.html#SP5_1">&#167;5.1</a>, <a href="3-iitf.html#SP7_1">&#167;7.1</a><br/>Inter Value Pairs - <a href="3-ivp.html#SP13">&#167;13</a><br/>Inter Data Types - <a href="3-idt.html#SP17_10">&#167;17.10</a><br/>Metadata - <a href="3-mtd.html#SP6_1">&#167;6.1</a><br/>The Package Construct - <a href="4-tpc.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">InterPackage::tree</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">InterPackage::tree</span></span>:<br/>Bookmarks - <a href="2-bkm.html#SP5">&#167;5</a><br/>The Warehouse - <a href="2-tw.html#SP5">&#167;5</a><br/>Symbols - <a href="2-sym.html#SP20">&#167;20</a><br/>The Wiring - <a href="2-tw2.html#SP12">&#167;12</a><br/>Transmigration - <a href="2-trn.html#SP3_1">&#167;3.1</a>, <a href="2-trn.html#SP4_2_2">&#167;4.2.2</a><br/>Inter in Text Files - <a href="3-iitf.html#SP5_1">&#167;5.1</a>, <a href="3-iitf.html#SP7_1">&#167;7.1</a><br/>Inter Value Pairs - <a href="3-ivp.html#SP13">&#167;13</a><br/>Inter Data Types - <a href="3-idt.html#SP17_11">&#167;17.11</a><br/>Metadata - <a href="3-mtd.html#SP6_1">&#167;6.1</a><br/>The Package Construct - <a href="4-tpc.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pack</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">pack</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">package_head</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">tree</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">pack</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">package_head</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">tree</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>

View file

@ -129,7 +129,7 @@ function is the inverse of <a href="2-pck.html#SP10" class="internal">InterPacka
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbolsTable::package</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">InterSymbolsTable::package</span></span>:<br/><a href="2-st.html#SP18">&#167;18</a>, <a href="2-st.html#SP22">&#167;22</a><br/>Symbols - <a href="2-sym.html#SP3">&#167;3</a><br/>Inter in Text Files - <a href="3-iitf.html#SP5_1">&#167;5.1</a><br/>Inter Data Types - <a href="3-idt.html#SP17_10">&#167;17.10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ST</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbolsTable::package</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">InterSymbolsTable::package</span></span>:<br/><a href="2-st.html#SP18">&#167;18</a>, <a href="2-st.html#SP22">&#167;22</a><br/>Symbols - <a href="2-sym.html#SP3">&#167;3</a><br/>Inter in Text Files - <a href="3-iitf.html#SP5_1">&#167;5.1</a><br/>Inter Data Types - <a href="3-idt.html#SP17_11">&#167;17.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ST</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ST</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ST</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_package</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ST</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ST</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_package</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
@ -655,7 +655,7 @@ as a way of handling forward references.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbolsTable::wire_to_URL</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">InterSymbolsTable::wire_to_URL</span></span>:<br/>Inter in Text Files - <a href="3-iitf.html#SP12_14">&#167;12.14</a><br/>Inter Data Types - <a href="3-idt.html#SP17_10">&#167;17.10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">URL</span><span class="plain-syntax">,</span> <span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbolsTable::wire_to_URL</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">InterSymbolsTable::wire_to_URL</span></span>:<br/>Inter in Text Files - <a href="3-iitf.html#SP12_14">&#167;12.14</a><br/>Inter Data Types - <a href="3-idt.html#SP17_11">&#167;17.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">URL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="2-st.html#SP19" class="function-link"><span class="function-syntax">InterSymbolsTable::URL_to_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">URL</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="2-st.html#SP19" class="function-link"><span class="function-syntax">InterSymbolsTable::URL_to_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">URL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>

View file

@ -90,6 +90,7 @@ invalidate existing Inter binary files, necessitating a bump of <a href="1-tiv.h
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEXT_ITCONC</span> <span class="definition-keyword">enum</span> <span class="constant-syntax">TEXT_ITCONC</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">ENUM_ITCONC</span> <span class="definition-keyword">enum</span> <span class="constant-syntax">ENUM_ITCONC</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">LIST_ITCONC</span> <span class="definition-keyword">enum</span> <span class="constant-syntax">LIST_ITCONC</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">ACTIVITY_ITCONC</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">COLUMN_ITCONC</span> <span class="definition-keyword">enum</span> <span class="constant-syntax">COLUMN_ITCONC</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">TABLE_ITCONC</span> <span class="definition-keyword">enum</span> <span class="constant-syntax">TABLE_ITCONC</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">FUNCTION_ITCONC</span> <span class="definition-keyword">enum</span> <span class="constant-syntax">FUNCTION_ITCONC</span>
@ -145,6 +146,7 @@ initialise it:
<span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEXT_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"text"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEXT_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"text"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ENUM_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"enum"</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ENUM_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"enum"</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LIST_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"list"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LIST_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"list"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ACTIVITY_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"activity"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COLUMN_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"column"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COLUMN_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"column"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TABLE_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"table"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TABLE_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"table"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">FUNCTION_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"function"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-idt.html#SP5" class="function-link"><span class="function-syntax">InterTypes::init_con</span></a><span class="plain-syntax">(</span><span class="constant-syntax">FUNCTION_ITCONC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"function"</span><span class="plain-syntax">, -2147483648, </span><span class="constant-syntax">2147483647</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
@ -188,7 +190,7 @@ that it's fine for textual lookups to be relatively slow.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">inter_type_constructor</span><span class="plain-syntax"> *</span><span class="function-syntax">InterTypes::constructor_from_name</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">InterTypes::constructor_from_name</span></span>:<br/><a href="3-idt.html#SP17_9">&#167;17.9</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">inter_type_constructor</span><span class="plain-syntax"> *</span><span class="function-syntax">InterTypes::constructor_from_name</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">InterTypes::constructor_from_name</span></span>:<br/><a href="3-idt.html#SP17_10">&#167;17.10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">ID</span><span class="plain-syntax"> = </span><span class="constant-syntax">MIN_INTER_TYPE_CONSTRUCTOR</span><span class="plain-syntax">; </span><span class="identifier-syntax">ID</span><span class="plain-syntax"> &lt;= </span><span class="constant-syntax">MAX_INTER_TYPE_CONSTRUCTOR</span><span class="plain-syntax">; </span><span class="identifier-syntax">ID</span><span class="plain-syntax">++) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">ID</span><span class="plain-syntax"> = </span><span class="constant-syntax">MIN_INTER_TYPE_CONSTRUCTOR</span><span class="plain-syntax">; </span><span class="identifier-syntax">ID</span><span class="plain-syntax"> &lt;= </span><span class="constant-syntax">MAX_INTER_TYPE_CONSTRUCTOR</span><span class="plain-syntax">; </span><span class="identifier-syntax">ID</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_type_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">itc</span><span class="plain-syntax"> = &amp;(</span><span class="identifier-syntax">inter_type_constructors</span><span class="plain-syntax">[</span><span class="identifier-syntax">ID</span><span class="plain-syntax">]);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inter_type_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">itc</span><span class="plain-syntax"> = &amp;(</span><span class="identifier-syntax">inter_type_constructors</span><span class="plain-syntax">[</span><span class="identifier-syntax">ID</span><span class="plain-syntax">]);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">itc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">constructor_keyword</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">itc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">constructor_keyword</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
@ -266,7 +268,7 @@ type name, and so can be stored in an <a href="3-idt.html#SP9" class="internal">
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::from_constructor_code</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">InterTypes::from_constructor_code</span></span>:<br/><a href="3-idt.html#SP12">&#167;12</a>, <a href="3-idt.html#SP14">&#167;14</a>, <a href="3-idt.html#SP17_7">&#167;17.7</a>, <a href="3-idt.html#SP18">&#167;18</a><br/>The Typename Construct - <a href="4-ttc.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">constructor_code</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::from_constructor_code</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">InterTypes::from_constructor_code</span></span>:<br/><a href="3-idt.html#SP12">&#167;12</a>, <a href="3-idt.html#SP14">&#167;14</a>, <a href="3-idt.html#SP17_8">&#167;17.8</a>, <a href="3-idt.html#SP18">&#167;18</a><br/>The Typename Construct - <a href="4-ttc.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">constructor_code</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-idt.html#SP2" class="function-link"><span class="function-syntax">InterTypes::is_valid_constructor_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">constructor_code</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-idt.html#SP2" class="function-link"><span class="function-syntax">InterTypes::is_valid_constructor_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">constructor_code</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"invalid constructor code"</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"invalid constructor code"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">type</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">type</span><span class="plain-syntax">;</span>
@ -275,7 +277,7 @@ type name, and so can be stored in an <a href="3-idt.html#SP9" class="internal">
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">type</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">type</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::from_type_name</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">InterTypes::from_type_name</span></span>:<br/><a href="3-idt.html#SP14">&#167;14</a>, <a href="3-idt.html#SP17_10">&#167;17.10</a>, <a href="3-idt.html#SP19">&#167;19</a><br/>The Instance Construct - <a href="4-tic2.html#SP3">&#167;3</a><br/>The Permission Construct - <a href="4-tpc3.html#SP3">&#167;3</a><br/>The Typename Construct - <a href="4-ttc.html#SP3">&#167;3</a>, <a href="4-ttc.html#SP4">&#167;4</a>, <a href="4-ttc.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::from_type_name</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">InterTypes::from_type_name</span></span>:<br/><a href="3-idt.html#SP14">&#167;14</a>, <a href="3-idt.html#SP17_11">&#167;17.11</a>, <a href="3-idt.html#SP19">&#167;19</a><br/>The Instance Construct - <a href="4-tic2.html#SP3">&#167;3</a><br/>The Permission Construct - <a href="4-tpc3.html#SP3">&#167;3</a><br/>The Typename Construct - <a href="4-ttc.html#SP3">&#167;3</a>, <a href="4-ttc.html#SP4">&#167;4</a>, <a href="4-ttc.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">type</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">type</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">type</span><span class="plain-syntax">.</span><span class="element-syntax">underlying_constructor</span><span class="plain-syntax"> = </span><a href="4-ttc.html#SP7" class="function-link"><span class="function-syntax">TypenameInstruction::constructor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">type</span><span class="plain-syntax">.</span><span class="element-syntax">underlying_constructor</span><span class="plain-syntax"> = </span><a href="4-ttc.html#SP7" class="function-link"><span class="function-syntax">TypenameInstruction::constructor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
@ -309,7 +311,7 @@ in which all data is <span class="extract"><span class="extract-syntax">unchecke
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::unchecked</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">InterTypes::unchecked</span></span>:<br/><a href="3-idt.html#SP10">&#167;10</a>, <a href="3-idt.html#SP13">&#167;13</a>, <a href="3-idt.html#SP14">&#167;14</a>, <a href="3-idt.html#SP17_6">&#167;17.6</a>, <a href="3-idt.html#SP18">&#167;18</a>, <a href="3-idt.html#SP23">&#167;23</a><br/>The Instance Construct - <a href="4-tic2.html#SP4">&#167;4</a>, <a href="4-tic2.html#SP4_2">&#167;4.2</a><br/>The Package Construct - <a href="4-tpc.html#SP6">&#167;6</a><br/>The Property Construct - <a href="4-tpc6.html#SP4">&#167;4</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP3">&#167;3</a><br/>The Typename Construct - <a href="4-ttc.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::unchecked</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">InterTypes::unchecked</span></span>:<br/><a href="3-idt.html#SP10">&#167;10</a>, <a href="3-idt.html#SP13">&#167;13</a>, <a href="3-idt.html#SP14">&#167;14</a>, <a href="3-idt.html#SP17_7">&#167;17.7</a>, <a href="3-idt.html#SP18">&#167;18</a>, <a href="3-idt.html#SP23">&#167;23</a><br/>The Instance Construct - <a href="4-tic2.html#SP4">&#167;4</a>, <a href="4-tic2.html#SP4_2">&#167;4.2</a><br/>The Package Construct - <a href="4-tpc.html#SP6">&#167;6</a><br/>The Property Construct - <a href="4-tpc6.html#SP4">&#167;4</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP3">&#167;3</a><br/>The Typename Construct - <a href="4-ttc.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-idt.html#SP10" class="function-link"><span class="function-syntax">InterTypes::from_constructor_code</span></a><span class="plain-syntax">(</span><span class="constant-syntax">UNCHECKED_ITCONC</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-idt.html#SP10" class="function-link"><span class="function-syntax">InterTypes::from_constructor_code</span></a><span class="plain-syntax">(</span><span class="constant-syntax">UNCHECKED_ITCONC</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
@ -406,7 +408,7 @@ Inter because it's primarily designed as a language for programs to write.
<span class="plain-syntax"> </span><span class="identifier-syntax">results</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">operand_TIDs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">results</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">default_operand_TIDs</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">results</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">operand_TIDs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">results</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">default_operand_TIDs</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::add_operand_to_isstd</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">InterTypes::add_operand_to_isstd</span></span>:<br/><a href="3-idt.html#SP17_1">&#167;17.1</a>, <a href="3-idt.html#SP17_2">&#167;17.2</a>, <a href="3-idt.html#SP17_3">&#167;17.3</a>, <a href="3-idt.html#SP17_4">&#167;17.4</a>, <a href="3-idt.html#SP17_5">&#167;17.5</a>, <a href="3-idt.html#SP17_6">&#167;17.6</a>, <a href="3-idt.html#SP17_7">&#167;17.7</a>, <a href="3-idt.html#SP17_8">&#167;17.8</a>, <a href="3-idt.html#SP17_10">&#167;17.10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_semisimple_type_description</span><span class="plain-syntax"> *</span><span class="identifier-syntax">results</span><span class="plain-syntax">,</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::add_operand_to_isstd</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">InterTypes::add_operand_to_isstd</span></span>:<br/><a href="3-idt.html#SP17_1">&#167;17.1</a>, <a href="3-idt.html#SP17_2">&#167;17.2</a>, <a href="3-idt.html#SP17_3">&#167;17.3</a>, <a href="3-idt.html#SP17_4">&#167;17.4</a>, <a href="3-idt.html#SP17_5">&#167;17.5</a>, <a href="3-idt.html#SP17_6">&#167;17.6</a>, <a href="3-idt.html#SP17_7">&#167;17.7</a>, <a href="3-idt.html#SP17_8">&#167;17.8</a>, <a href="3-idt.html#SP17_9">&#167;17.9</a>, <a href="3-idt.html#SP17_11">&#167;17.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_semisimple_type_description</span><span class="plain-syntax"> *</span><span class="identifier-syntax">results</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">type</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">type</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">TID</span><span class="plain-syntax"> = </span><a href="3-idt.html#SP15" class="function-link"><span class="function-syntax">InterTypes::to_TID</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">type</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">TID</span><span class="plain-syntax"> = </span><a href="3-idt.html#SP15" class="function-link"><span class="function-syntax">InterTypes::to_TID</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">type</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">results</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">arity</span><span class="plain-syntax"> &gt;= </span><span class="identifier-syntax">results</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">capacity</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">results</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">arity</span><span class="plain-syntax"> &gt;= </span><span class="identifier-syntax">results</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">capacity</span><span class="plain-syntax">) {</span>
@ -459,14 +461,15 @@ prevents a memory leak if really large results were returned.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_1" class="named-paragraph-link"><span class="named-paragraph">Parse rulebook syntax</span><span class="named-paragraph-number">17.1</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_1" class="named-paragraph-link"><span class="named-paragraph">Parse rulebook syntax</span><span class="named-paragraph-number">17.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_2" class="named-paragraph-link"><span class="named-paragraph">Parse list syntax</span><span class="named-paragraph-number">17.2</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_2" class="named-paragraph-link"><span class="named-paragraph">Parse list syntax</span><span class="named-paragraph-number">17.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_3" class="named-paragraph-link"><span class="named-paragraph">Parse column syntax</span><span class="named-paragraph-number">17.3</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_3" class="named-paragraph-link"><span class="named-paragraph">Parse activity syntax</span><span class="named-paragraph-number">17.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_4" class="named-paragraph-link"><span class="named-paragraph">Parse table syntax</span><span class="named-paragraph-number">17.4</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_4" class="named-paragraph-link"><span class="named-paragraph">Parse column syntax</span><span class="named-paragraph-number">17.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_5" class="named-paragraph-link"><span class="named-paragraph">Parse description syntax</span><span class="named-paragraph-number">17.5</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_5" class="named-paragraph-link"><span class="named-paragraph">Parse table syntax</span><span class="named-paragraph-number">17.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_6" class="named-paragraph-link"><span class="named-paragraph">Parse relation syntax</span><span class="named-paragraph-number">17.6</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_6" class="named-paragraph-link"><span class="named-paragraph">Parse description syntax</span><span class="named-paragraph-number">17.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_7" class="named-paragraph-link"><span class="named-paragraph">Parse rule or function syntax</span><span class="named-paragraph-number">17.7</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_7" class="named-paragraph-link"><span class="named-paragraph">Parse relation syntax</span><span class="named-paragraph-number">17.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_8" class="named-paragraph-link"><span class="named-paragraph">Parse struct syntax</span><span class="named-paragraph-number">17.8</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_8" class="named-paragraph-link"><span class="named-paragraph">Parse rule or function syntax</span><span class="named-paragraph-number">17.8</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_9" class="named-paragraph-link"><span class="named-paragraph">Parse bare constructor-name syntax</span><span class="named-paragraph-number">17.9</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_9" class="named-paragraph-link"><span class="named-paragraph">Parse struct syntax</span><span class="named-paragraph-number">17.9</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_10" class="named-paragraph-link"><span class="named-paragraph">Parse bare typename syntax</span><span class="named-paragraph-number">17.10</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_10" class="named-paragraph-link"><span class="named-paragraph">Parse bare constructor-name syntax</span><span class="named-paragraph-number">17.10</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-idt.html#SP17_11" class="named-paragraph-link"><span class="named-paragraph">Parse bare typename syntax</span><span class="named-paragraph-number">17.11</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ie.html#SP4" class="function-link"><span class="function-syntax">InterErrors::quoted</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"no such data type"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">eloc</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ie.html#SP4" class="function-link"><span class="function-syntax">InterErrors::quoted</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"no such data type"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">eloc</span><span class="plain-syntax">);</span>
@ -498,7 +501,20 @@ prevents a memory leak if really large results were returned.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17_3" class="paragraph-anchor"></a><b>&#167;17.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse column syntax</span><span class="named-paragraph-number">17.3</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP17_3" class="paragraph-anchor"></a><b>&#167;17.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse activity syntax</span><span class="named-paragraph-number">17.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"activity on (%C+)"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">results</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">constructor_code</span><span class="plain-syntax"> = </span><span class="constant-syntax">ACTIVITY_ITCONC</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">conts_type</span><span class="plain-syntax"> = </span><a href="3-idt.html#SP18" class="function-link"><span class="function-syntax">InterTypes::parse_simple</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">eloc</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], &amp;</span><span class="identifier-syntax">E</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP16" class="function-link"><span class="function-syntax">InterTypes::add_operand_to_isstd</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">results</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">conts_type</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</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">E</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17_4" class="paragraph-anchor"></a><b>&#167;17.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse column syntax</span><span class="named-paragraph-number">17.4</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -511,7 +527,7 @@ prevents a memory leak if really large results were returned.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17_4" class="paragraph-anchor"></a><b>&#167;17.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse table syntax</span><span class="named-paragraph-number">17.4</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP17_5" class="paragraph-anchor"></a><b>&#167;17.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse table syntax</span><span class="named-paragraph-number">17.5</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -524,7 +540,7 @@ prevents a memory leak if really large results were returned.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17_5" class="paragraph-anchor"></a><b>&#167;17.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse description syntax</span><span class="named-paragraph-number">17.5</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP17_6" class="paragraph-anchor"></a><b>&#167;17.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse description syntax</span><span class="named-paragraph-number">17.6</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -537,7 +553,7 @@ prevents a memory leak if really large results were returned.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17_6" class="paragraph-anchor"></a><b>&#167;17.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse relation syntax</span><span class="named-paragraph-number">17.6</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP17_7" class="paragraph-anchor"></a><b>&#167;17.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse relation syntax</span><span class="named-paragraph-number">17.7</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -556,7 +572,7 @@ prevents a memory leak if really large results were returned.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17_7" class="paragraph-anchor"></a><b>&#167;17.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse rule or function syntax</span><span class="named-paragraph-number">17.7</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP17_8" class="paragraph-anchor"></a><b>&#167;17.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse rule or function syntax</span><span class="named-paragraph-number">17.8</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -592,7 +608,7 @@ prevents a memory leak if really large results were returned.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17_8" class="paragraph-anchor"></a><b>&#167;17.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse struct syntax</span><span class="named-paragraph-number">17.8</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP17_9" class="paragraph-anchor"></a><b>&#167;17.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse struct syntax</span><span class="named-paragraph-number">17.9</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -612,7 +628,7 @@ prevents a memory leak if really large results were returned.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17_9" class="paragraph-anchor"></a><b>&#167;17.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse bare constructor-name syntax</span><span class="named-paragraph-number">17.9</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP17_10" class="paragraph-anchor"></a><b>&#167;17.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse bare constructor-name syntax</span><span class="named-paragraph-number">17.10</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -626,7 +642,7 @@ prevents a memory leak if really large results were returned.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-idt.html#SP17">&#167;17</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP17_10" class="paragraph-anchor"></a><b>&#167;17.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse bare typename syntax</span><span class="named-paragraph-number">17.10</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP17_11" class="paragraph-anchor"></a><b>&#167;17.11. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Parse bare typename syntax</span><span class="named-paragraph-number">17.11</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -658,7 +674,7 @@ useful error message in response to a semisimple but not simple piece of syntax.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::parse_simple</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">InterTypes::parse_simple</span></span>:<br/><a href="3-idt.html#SP17_1">&#167;17.1</a>, <a href="3-idt.html#SP17_2">&#167;17.2</a>, <a href="3-idt.html#SP17_3">&#167;17.3</a>, <a href="3-idt.html#SP17_4">&#167;17.4</a>, <a href="3-idt.html#SP17_5">&#167;17.5</a>, <a href="3-idt.html#SP17_6">&#167;17.6</a>, <a href="3-idt.html#SP17_7">&#167;17.7</a>, <a href="3-idt.html#SP17_8">&#167;17.8</a><br/>The Constant Construct - <a href="4-tcc2.html#SP6_1">&#167;6.1</a><br/>The Instance Construct - <a href="4-tic2.html#SP4_1">&#167;4.1</a><br/>The Package Construct - <a href="4-tpc.html#SP6">&#167;6</a><br/>The Property Construct - <a href="4-tpc6.html#SP4">&#167;4</a><br/>The Variable Construct - <a href="4-tvc.html#SP4">&#167;4</a><br/>The Cast Construct - <a href="5-tcc.html#SP4">&#167;4</a><br/>The Local Construct - <a href="5-tlc3.html#SP4">&#167;4</a><br/>The Ref Construct - <a href="5-trc.html#SP4">&#167;4</a><br/>The Val Construct - <a href="5-tvc.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_location</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eloc</span><span class="plain-syntax">,</span> <span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::parse_simple</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">InterTypes::parse_simple</span></span>:<br/><a href="3-idt.html#SP17_1">&#167;17.1</a>, <a href="3-idt.html#SP17_2">&#167;17.2</a>, <a href="3-idt.html#SP17_3">&#167;17.3</a>, <a href="3-idt.html#SP17_4">&#167;17.4</a>, <a href="3-idt.html#SP17_5">&#167;17.5</a>, <a href="3-idt.html#SP17_6">&#167;17.6</a>, <a href="3-idt.html#SP17_7">&#167;17.7</a>, <a href="3-idt.html#SP17_8">&#167;17.8</a>, <a href="3-idt.html#SP17_9">&#167;17.9</a><br/>The Constant Construct - <a href="4-tcc2.html#SP6_1">&#167;6.1</a><br/>The Instance Construct - <a href="4-tic2.html#SP4_1">&#167;4.1</a><br/>The Package Construct - <a href="4-tpc.html#SP6">&#167;6</a><br/>The Property Construct - <a href="4-tpc6.html#SP4">&#167;4</a><br/>The Variable Construct - <a href="4-tvc.html#SP4">&#167;4</a><br/>The Cast Construct - <a href="5-tcc.html#SP4">&#167;4</a><br/>The Local Construct - <a href="5-tlc3.html#SP4">&#167;4</a><br/>The Ref Construct - <a href="5-trc.html#SP4">&#167;4</a><br/>The Val Construct - <a href="5-tvc.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_location</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eloc</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">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_message</span><span class="plain-syntax"> **</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_message</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_semisimple_type_description</span><span class="plain-syntax"> </span><span class="identifier-syntax">parsed_description</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inter_semisimple_type_description</span><span class="plain-syntax"> </span><span class="identifier-syntax">parsed_description</span><span class="plain-syntax">;</span>
@ -722,6 +738,10 @@ just print that name, <span class="extract"><span class="extract-syntax">K_whate
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" of "</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" of "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP19" class="function-link"><span class="function-syntax">InterTypes::write_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="3-idt.html#SP13" class="function-link"><span class="function-syntax">InterTypes::type_operand</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">type</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><a href="3-idt.html#SP19" class="function-link"><span class="function-syntax">InterTypes::write_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="3-idt.html#SP13" class="function-link"><span class="function-syntax">InterTypes::type_operand</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">type</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACTIVITY_ITCONC:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" on "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP19" class="function-link"><span class="function-syntax">InterTypes::write_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="3-idt.html#SP13" class="function-link"><span class="function-syntax">InterTypes::type_operand</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">type</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">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">RELATION_ITCONC:</span> <span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">RELATION_ITCONC:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" of "</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" of "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP19" class="function-link"><span class="function-syntax">InterTypes::write_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="3-idt.html#SP13" class="function-link"><span class="function-syntax">InterTypes::type_operand</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">type</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><a href="3-idt.html#SP19" class="function-link"><span class="function-syntax">InterTypes::write_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="3-idt.html#SP13" class="function-link"><span class="function-syntax">InterTypes::type_operand</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">type</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span>

View file

@ -116,7 +116,7 @@ of ways.)
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inter_error_message</span><span class="plain-syntax"> *</span><span class="function-syntax">InterErrors::quoted</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">InterErrors::quoted</span></span>:<br/>Annotations - <a href="2-ann.html#SP15">&#167;15</a><br/>Inter Constructs - <a href="3-ic.html#SP7">&#167;7</a><br/>Inter in Text Files - <a href="3-iitf.html#SP4">&#167;4</a>, <a href="3-iitf.html#SP5">&#167;5</a>, <a href="3-iitf.html#SP5_1">&#167;5.1</a>, <a href="3-iitf.html#SP5_2">&#167;5.2</a>, <a href="3-iitf.html#SP6">&#167;6</a>, <a href="3-iitf.html#SP7_1">&#167;7.1</a>, <a href="3-iitf.html#SP11">&#167;11</a>, <a href="3-iitf.html#SP12">&#167;12</a>, <a href="3-iitf.html#SP12_2">&#167;12.2</a><br/>Inter Data Types - <a href="3-idt.html#SP17">&#167;17</a>, <a href="3-idt.html#SP17_9">&#167;17.9</a>, <a href="3-idt.html#SP17_10">&#167;17.10</a>, <a href="3-idt.html#SP18">&#167;18</a><br/>The Primitive Construct - <a href="4-tpc5.html#SP7">&#167;7</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP4">&#167;4</a><br/>The Typename Construct - <a href="4-ttc.html#SP4">&#167;4</a><br/>The Inv Construct - <a href="5-tic.html#SP7_1">&#167;7.1</a>, <a href="5-tic.html#SP7_3">&#167;7.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">err</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">quote</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_location</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eloc</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">inter_error_message</span><span class="plain-syntax"> *</span><span class="function-syntax">InterErrors::quoted</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">InterErrors::quoted</span></span>:<br/>Annotations - <a href="2-ann.html#SP15">&#167;15</a><br/>Inter Constructs - <a href="3-ic.html#SP7">&#167;7</a><br/>Inter in Text Files - <a href="3-iitf.html#SP4">&#167;4</a>, <a href="3-iitf.html#SP5">&#167;5</a>, <a href="3-iitf.html#SP5_1">&#167;5.1</a>, <a href="3-iitf.html#SP5_2">&#167;5.2</a>, <a href="3-iitf.html#SP6">&#167;6</a>, <a href="3-iitf.html#SP7_1">&#167;7.1</a>, <a href="3-iitf.html#SP11">&#167;11</a>, <a href="3-iitf.html#SP12">&#167;12</a>, <a href="3-iitf.html#SP12_2">&#167;12.2</a><br/>Inter Data Types - <a href="3-idt.html#SP17">&#167;17</a>, <a href="3-idt.html#SP17_10">&#167;17.10</a>, <a href="3-idt.html#SP17_11">&#167;17.11</a>, <a href="3-idt.html#SP18">&#167;18</a><br/>The Primitive Construct - <a href="4-tpc5.html#SP7">&#167;7</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP4">&#167;4</a><br/>The Typename Construct - <a href="4-ttc.html#SP4">&#167;4</a><br/>The Inv Construct - <a href="5-tic.html#SP7_1">&#167;7.1</a>, <a href="5-tic.html#SP7_3">&#167;7.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">err</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">quote</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_location</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eloc</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_error_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iem</span><span class="plain-syntax"> = </span><a href="3-ie.html#SP4" class="function-link"><span class="function-syntax">InterErrors::plain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="identifier-syntax">eloc</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inter_error_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iem</span><span class="plain-syntax"> = </span><a href="3-ie.html#SP4" class="function-link"><span class="function-syntax">InterErrors::plain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="identifier-syntax">eloc</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">iem</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">error_quote</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">quote</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">iem</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">error_quote</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">quote</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">iem</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">iem</span><span class="plain-syntax">;</span>

View file

@ -257,7 +257,7 @@ enables us to tell if it's, e.g., a variable, defined by <span class="extract"><
<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="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">construct</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_message</span><span class="plain-syntax"> **</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">construct</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_message</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">return</span><span class="plain-syntax"> </span><a href="3-iitf.html#SP5" class="function-link"><span class="function-syntax">TextualInter::find_symbol_in_table</span></a><span class="plain-syntax">(</span><a href="2-bkm.html#SP7" class="function-link"><span class="function-syntax">InterBookmark::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">), </span><span class="identifier-syntax">eloc</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">construct</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">return</span><span class="plain-syntax"> </span><a href="3-iitf.html#SP5" class="function-link"><span class="function-syntax">TextualInter::find_symbol_in_table</span></a><span class="plain-syntax">(</span><a href="2-bkm.html#SP7" class="function-link"><span class="function-syntax">InterBookmark::scope</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">), </span><span class="identifier-syntax">eloc</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">construct</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">TextualInter::find_symbol_in_table</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">TextualInter::find_symbol_in_table</span></span>:<br/>Inter Data Types - <a href="3-idt.html#SP17_10">&#167;17.10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_location</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eloc</span><span class="plain-syntax">,</span> <span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">TextualInter::find_symbol_in_table</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">TextualInter::find_symbol_in_table</span></span>:<br/>Inter Data Types - <a href="3-idt.html#SP17_11">&#167;17.11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_location</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eloc</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="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">construct</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_message</span><span class="plain-syntax"> **</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="constant-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">construct</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_error_message</span><span class="plain-syntax"> **</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">E</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">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>

View file

@ -429,10 +429,10 @@ used, but <span class="extract"><span class="extract-syntax">void</span></span>
must be at least one of these, so <span class="extract"><span class="extract-syntax">struct void</span></span> is not allowed. must be at least one of these, so <span class="extract"><span class="extract-syntax">struct void</span></span> is not allowed.
</li><li>&#9679; <span class="extract"><span class="extract-syntax">enum</span></span>, for which see below; </li><li>&#9679; <span class="extract"><span class="extract-syntax">enum</span></span>, for which see below;
</li><li>&#9679; and then a raft of constructions convenient for Inform but which Inter </li><li>&#9679; and then a raft of constructions convenient for Inform but which Inter
really knows nothing about: <span class="extract"><span class="extract-syntax">column of T</span></span>, <span class="extract"><span class="extract-syntax">table of T</span></span>, <span class="extract"><span class="extract-syntax">relation of T1 to T2</span></span>, really knows nothing about: <span class="extract"><span class="extract-syntax">activity on T</span></span>, <span class="extract"><span class="extract-syntax">column of T</span></span>, <span class="extract"><span class="extract-syntax">table of T</span></span>,
<span class="extract"><span class="extract-syntax">description of T</span></span>, <span class="extract"><span class="extract-syntax">rulebook of T</span></span>, and <span class="extract"><span class="extract-syntax">rule T1 -&gt; T2</span></span>. Perhaps these ought <span class="extract"><span class="extract-syntax">relation of T1 to T2</span></span>, <span class="extract"><span class="extract-syntax">description of T</span></span>, <span class="extract"><span class="extract-syntax">rulebook of T</span></span>, and <span class="extract"><span class="extract-syntax">rule T1 -&gt; T2</span></span>.
to work via a general way for users to create new constructors, but for now Perhaps these ought to work via a general way for users to create new constructors,
they are hard-wired. They do nothing except to be distinct from each other, but for now they are hard-wired. They do nothing except to be distinct from each other,
so that Inform can label its data. so that Inform can label its data.
</li></ul> </li></ul>
<p class="commentary">Inter applies the usual rules of covariance and contravariance when matching <p class="commentary">Inter applies the usual rules of covariance and contravariance when matching

View file

@ -148,8 +148,8 @@ checks that we aren't doing that:
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Behaviour::definite</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">Kinds::Behaviour::definite</span></span>:<br/>Star Templates - <a href="4-st.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Behaviour::definite</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">Kinds::Behaviour::definite</span></span>:<br/>Star Templates - <a href="4-st.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-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">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">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">TRUE</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-kc2.html#SP16" class="function-link"><span class="function-syntax">KindConstructors::is_definite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-kc2.html#SP16" class="function-link"><span class="function-syntax">KindConstructors::is_definite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">arity</span><span class="plain-syntax"> = </span><a href="4-kc2.html#SP15" class="function-link"><span class="function-syntax">KindConstructors::arity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</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">arity</span><span class="plain-syntax"> = </span><a href="4-kc2.html#SP15" class="function-link"><span class="function-syntax">KindConstructors::arity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-uk.html#SP4" class="function-link"><span class="function-syntax">Kinds::Behaviour::definite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-uk.html#SP4" class="function-link"><span class="function-syntax">Kinds::Behaviour::definite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -160,15 +160,15 @@ checks that we aren't doing that:
<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">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CON_KIND_VARIABLE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CON_KIND_VARIABLE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CON_NIL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CON_NIL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-kc2.html#SP16" class="function-link"><span class="function-syntax">KindConstructors::is_definite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-kc2.html#SP16" class="function-link"><span class="function-syntax">KindConstructors::is_definite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">arity</span><span class="plain-syntax"> = </span><a href="4-kc2.html#SP15" class="function-link"><span class="function-syntax">KindConstructors::arity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</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">arity</span><span class="plain-syntax"> = </span><a href="4-kc2.html#SP15" class="function-link"><span class="function-syntax">KindConstructors::arity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span 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">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CON_TUPLE_ENTRY</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-knd.html#SP24" class="function-link"><span class="function-syntax">Kinds::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">K_void</span><span class="plain-syntax">))) </span><span class="identifier-syntax">arity</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CON_TUPLE_ENTRY</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-knd.html#SP24" class="function-link"><span class="function-syntax">Kinds::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">K_void</span><span class="plain-syntax">))) </span><span class="identifier-syntax">arity</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">construct</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CON_phrase</span><span 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">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CON_phrase</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">construct</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="2-knd.html#SP24" class="function-link"><span class="function-syntax">Kinds::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">], </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="2-knd.html#SP24" class="function-link"><span class="function-syntax">Kinds::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">], </span><span class="identifier-syntax">K_nil</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="2-uk.html#SP4" class="function-link"><span class="function-syntax">Kinds::Behaviour::semidefinite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span> <span class="plain-syntax"> (</span><a href="2-uk.html#SP4" class="function-link"><span class="function-syntax">Kinds::Behaviour::semidefinite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span> <span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-uk.html#SP4" class="function-link"><span class="function-syntax">Kinds::Behaviour::semidefinite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-uk.html#SP4" class="function-link"><span class="function-syntax">Kinds::Behaviour::semidefinite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_args</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>

View file

@ -233,11 +233,12 @@ source text.
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_description</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for description</span><span class="named-paragraph-number">9.2</span></a></span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_description</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for description</span><span class="named-paragraph-number">9.2</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_list_of</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for list</span><span class="named-paragraph-number">9.1</span></a></span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_list_of</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for list</span><span class="named-paragraph-number">9.1</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_phrase</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_5" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for phrase</span><span class="named-paragraph-number">9.5</span></a></span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_phrase</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_6" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for phrase</span><span class="named-paragraph-number">9.6</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_rule</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_6" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for rule</span><span class="named-paragraph-number">9.6</span></a></span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_rule</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_7" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for rule</span><span class="named-paragraph-number">9.7</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_rulebook</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_7" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for rulebook</span><span class="named-paragraph-number">9.7</span></a></span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_rulebook</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_8" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for rulebook</span><span class="named-paragraph-number">9.8</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_table_column</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_3" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for column</span><span class="named-paragraph-number">9.3</span></a></span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_table_column</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_3" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for column</span><span class="named-paragraph-number">9.3</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_relation</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_4" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for relation</span><span class="named-paragraph-number">9.4</span></a></span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_relation</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_4" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for relation</span><span class="named-paragraph-number">9.4</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CON_activity</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-kd.html#SP9_5" class="named-paragraph-link"><span class="named-paragraph">Run out inter kind for activity</span><span class="named-paragraph-number">9.5</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Unfortunate kind is: %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Unfortunate kind is: %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to represent kind in inter"</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to represent kind in inter"</span><span class="plain-syntax">);</span>
@ -282,7 +283,16 @@ source text.
<span class="plain-syntax"> </span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RELATION_ITCONC</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RELATION_ITCONC</span><span class="plain-syntax">;</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-kd.html#SP9">&#167;9</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="2-kd.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_5" class="paragraph-anchor"></a><b>&#167;9.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Run out inter kind for phrase</span><span class="named-paragraph-number">9.5</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP9_5" class="paragraph-anchor"></a><b>&#167;9.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Run out inter kind for activity</span><span class="named-paragraph-number">9.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="identifier-syntax">arity</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">Kinds::unary_construction_material</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ACTIVITY_ITCONC</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-kd.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_6" class="paragraph-anchor"></a><b>&#167;9.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Run out inter kind for phrase</span><span class="named-paragraph-number">9.6</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -300,7 +310,7 @@ source text.
<span class="plain-syntax"> </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[</span><span class="identifier-syntax">arity</span><span class="plain-syntax">++] = </span><span class="identifier-syntax">result</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[</span><span class="identifier-syntax">arity</span><span class="plain-syntax">++] = </span><span class="identifier-syntax">result</span><span class="plain-syntax">;</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-kd.html#SP9">&#167;9</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="2-kd.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_6" class="paragraph-anchor"></a><b>&#167;9.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Run out inter kind for rule</span><span class="named-paragraph-number">9.6</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP9_7" class="paragraph-anchor"></a><b>&#167;9.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Run out inter kind for rule</span><span class="named-paragraph-number">9.7</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -309,7 +319,7 @@ source text.
<span class="plain-syntax"> </span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RULE_ITCONC</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RULE_ITCONC</span><span class="plain-syntax">;</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-kd.html#SP9">&#167;9</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="2-kd.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_7" class="paragraph-anchor"></a><b>&#167;9.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Run out inter kind for rulebook</span><span class="named-paragraph-number">9.7</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP9_8" class="paragraph-anchor"></a><b>&#167;9.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Run out inter kind for rulebook</span><span class="named-paragraph-number">9.8</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">

View file

@ -1,47 +1,47 @@
Total memory consumption was 129458K = 126 MB Total memory consumption was 123375K = 120 MB
---- was used for 2044964 objects, in 362887 frames in 0 x 800K = 0K = 0 MB: ---- was used for 2044964 objects, in 362887 frames in 0 x 800K = 0K = 0 MB:
31.5% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes 33.0% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
19.5% text_stream_array 4605 x 100 = 460500 objects, 25935360 bytes 20.5% text_stream_array 4605 x 100 = 460500 objects, 25935360 bytes
18.3% linked_list 43461 objects, 24338160 bytes 19.2% linked_list 43461 objects, 24338160 bytes
10.6% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes 11.1% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
9.9% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes 10.4% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
7.8% parse_node 129722 objects, 10377760 bytes 8.2% parse_node 129722 objects, 10377760 bytes
5.6% verb_conjugation 160 objects, 7425280 bytes 5.8% verb_conjugation 160 objects, 7425280 bytes
4.1% parse_node_annotation_array 346 x 500 = 173000 objects, 5547072 bytes 4.3% parse_node_annotation_array 346 x 500 = 173000 objects, 5547072 bytes
2.5% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes 2.6% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes
2.4% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes 2.5% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
1.9% kind_array 66 x 1000 = 66000 objects, 2642112 bytes 2.0% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
1.5% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes 1.6% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
1.5% inter_schema_token 13969 objects, 2011536 bytes 1.5% inter_schema_token 13969 objects, 2011536 bytes
1.4% package_request 21153 objects, 1861464 bytes 1.4% package_request 21153 objects, 1861464 bytes
1.3% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes 1.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
1.1% dict_entry_array 470 x 100 = 47000 objects, 1519040 bytes 1.2% dict_entry_array 470 x 100 = 47000 objects, 1519040 bytes
1.1% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes 1.1% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
1.1% inter_symbols_table 26592 objects, 1489152 bytes 1.1% inter_symbols_table 26592 objects, 1489152 bytes
1.0% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes 1.0% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
0.9% scan_directory 314 objects, 1296192 bytes 1.0% scan_directory 314 objects, 1296192 bytes
0.9% inter_package 26592 objects, 1276416 bytes 1.0% inter_package 26592 objects, 1276416 bytes
0.8% map_data 671 objects, 1127280 bytes 0.8% map_data 671 objects, 1127280 bytes
0.8% id_body 942 objects, 1077648 bytes 0.8% id_body 942 objects, 1077648 bytes
0.7% adjective_meaning 202 objects, 1000304 bytes 0.7% adjective_meaning 202 objects, 1000304 bytes
0.7% excerpt_meaning 3102 objects, 967824 bytes 0.7% excerpt_meaning 3102 objects, 967824 bytes
0.6% production 3878 objects, 899696 bytes 0.7% production 3878 objects, 899696 bytes
0.6% ptoken 8397 objects, 873288 bytes 0.6% ptoken 8397 objects, 873288 bytes
0.6% grammatical_usage 3613 objects, 867120 bytes 0.6% grammatical_usage 3613 objects, 867120 bytes
0.6% individual_form 2563 objects, 861168 bytes 0.6% individual_form 2563 objects, 861168 bytes
0.6% inter_schema_node 8920 objects, 856320 bytes 0.6% inter_schema_node 8920 objects, 856320 bytes
0.4% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes 0.5% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes 0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
0.2% verb_usage 1128 objects, 388032 bytes 0.3% verb_usage 1128 objects, 388032 bytes
0.2% rule 470 objects, 368480 bytes 0.2% rule 470 objects, 368480 bytes
0.2% dictionary 7520 objects, 360960 bytes 0.2% dictionary 7520 objects, 360960 bytes
0.2% verb_form 386 objects, 348944 bytes 0.2% verb_form 386 objects, 348944 bytes
0.2% noun 2382 objects, 285840 bytes 0.2% noun 2382 objects, 285840 bytes
0.2% compilation_subtask 3355 objects, 268400 bytes 0.2% compilation_subtask 3355 objects, 268400 bytes
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes 0.2% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
0.1% inference_subject 666 objects, 261072 bytes 0.2% inference_subject 666 objects, 261072 bytes
0.1% vanilla_function 3683 objects, 235712 bytes 0.1% vanilla_function 3683 objects, 235712 bytes
0.1% binary_predicate 322 objects, 170016 bytes 0.1% binary_predicate 322 objects, 170016 bytes
0.1% hierarchy_location 1122 objects, 161568 bytes 0.1% hierarchy_location 1122 objects, 161568 bytes
@ -237,23 +237,23 @@ Total memory consumption was 129458K = 126 MB
100.0% was used for memory not allocated for objects: 100.0% was used for memory not allocated for objects:
59.7% text stream storage 79163588 bytes in 478472 claims 57.7% text stream storage 72934504 bytes in 478023 claims
3.9% dictionary storage 5228544 bytes in 7520 claims 4.1% dictionary storage 5228544 bytes in 7520 claims
---- sorting 1448 bytes in 149 claims ---- sorting 1448 bytes in 149 claims
5.4% source text 7200000 bytes in 3 claims 5.6% source text 7200000 bytes in 3 claims
8.1% source text details 10800000 bytes in 2 claims 8.5% source text details 10800000 bytes in 2 claims
0.1% documentation fragments 262144 bytes in 1 claim 0.2% documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims ---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims ---- small word set array 105600 bytes in 22 claims
3.4% inter symbols storage 4520272 bytes in 27949 claims 3.5% inter symbols storage 4520272 bytes in 27949 claims
12.6% inter bytecode storage 16767680 bytes in 14 claims 13.2% inter bytecode storage 16767680 bytes in 14 claims
4.6% inter links storage 6222976 bytes in 11 claims 4.9% inter links storage 6222976 bytes in 11 claims
0.1% inter tree location list storage 191232 bytes in 32 claims 0.1% inter tree location list storage 191232 bytes in 32 claims
1.2% instance-of-kind counting 1700416 bytes in 1 claim 1.3% instance-of-kind counting 1700416 bytes in 1 claim
---- compilation workspace for objects 21896 bytes in 25 claims ---- compilation workspace for objects 21896 bytes in 25 claims
---- lists for type-checking invocations 16000 bytes in 1 claim ---- lists for type-checking invocations 16000 bytes in 1 claim
---- code generation workspace for objects 1336 bytes in 4 claims ---- code generation workspace for objects 1336 bytes in 4 claims
0.2% emitter array storage 280288 bytes in 1999 claims 0.2% emitter array storage 280288 bytes in 1999 claims
-139.-2% was overhead - -184656920 bytes = -180329K = -176 MB -146.-1% was overhead - -184656920 bytes = -180329K = -176 MB

View file

@ -1,33 +1,33 @@
100.0% in inform7 run 100.0% in inform7 run
72.1% in compilation to Inter 71.3% in compilation to Inter
51.0% in //Sequence::undertake_queued_tasks// 50.7% in //Sequence::undertake_queued_tasks//
4.6% in //MajorNodes::pre_pass// 4.5% in //MajorNodes::pre_pass//
3.4% in //MajorNodes::pass_1// 3.3% in //MajorNodes::pass_1//
2.5% in //RTPhrasebook::compile_entries// 1.9% in //RTPhrasebook::compile_entries//
1.9% in //ImperativeDefinitions::assess_all// 1.7% in //ImperativeDefinitions::assess_all//
1.3% in //RTKindConstructors::compile// 1.3% in //RTKindConstructors::compile//
0.9% in //Sequence::lint_inter// 1.1% in //Sequence::lint_inter//
0.5% in //MajorNodes::pass_2// 0.5% in //MajorNodes::pass_2//
0.5% in //Sequence::undertake_queued_tasks// 0.5% in //Sequence::undertake_queued_tasks//
0.5% in //Sequence::undertake_queued_tasks//
0.5% in //World::stage_V// 0.5% in //World::stage_V//
0.3% in //ImperativeDefinitions::compile_first_block// 0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //Sequence::undertake_queued_tasks//
0.1% in //CompletionModule::compile// 0.1% in //CompletionModule::compile//
0.1% in //InferenceSubjects::emit_all// 0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions// 0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors// 0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III// 0.1% in //World::stages_II_and_III//
2.7% not specifically accounted for 2.6% not specifically accounted for
25.1% in running Inter pipeline 25.8% in running Inter pipeline
9.8% in step 14/15: generate inform6 -> auto.inf 10.0% in step 14/15: generate inform6 -> auto.inf
5.6% in step 5/15: load-binary-kits 5.7% in step 5/15: load-binary-kits
5.4% in step 6/15: make-synoptic-module 5.5% in step 6/15: make-synoptic-module
1.3% in step 9/15: make-identifiers-unique 1.3% in step 9/15: make-identifiers-unique
0.3% in step 12/15: eliminate-redundant-operations 0.3% in step 12/15: eliminate-redundant-operations
0.3% in step 4/15: compile-splats 0.3% in step 4/15: compile-splats
0.3% in step 7/15: shorten-wiring 0.3% in step 7/15: shorten-wiring
0.3% in step 8/15: detect-indirect-calls 0.3% in step 8/15: detect-indirect-calls
0.1% in step 11/15: eliminate-redundant-labels 0.1% in step 11/15: eliminate-redundant-labels
1.2% not specifically accounted for 1.3% not specifically accounted for
2.3% in supervisor 2.3% in supervisor
0.4% not specifically accounted for 0.4% not specifically accounted for

View file

@ -167,6 +167,7 @@ void RTKindDeclarations::declare_constructed_kind(cached_kind_declaration *dec)
else if (Kinds::get_construct(K) == CON_rulebook) @<Run out inter kind for rulebook@> else if (Kinds::get_construct(K) == CON_rulebook) @<Run out inter kind for rulebook@>
else if (Kinds::get_construct(K) == CON_table_column) @<Run out inter kind for column@> else if (Kinds::get_construct(K) == CON_table_column) @<Run out inter kind for column@>
else if (Kinds::get_construct(K) == CON_relation) @<Run out inter kind for relation@> else if (Kinds::get_construct(K) == CON_relation) @<Run out inter kind for relation@>
else if (Kinds::get_construct(K) == CON_activity) @<Run out inter kind for activity@>
else { else {
LOG("Unfortunate kind is: %u\n", K); LOG("Unfortunate kind is: %u\n", K);
internal_error("unable to represent kind in inter"); internal_error("unable to represent kind in inter");
@ -195,6 +196,11 @@ void RTKindDeclarations::declare_constructed_kind(cached_kind_declaration *dec)
Kinds::binary_construction_material(K, &operands[0], &operands[1]); Kinds::binary_construction_material(K, &operands[0], &operands[1]);
icon = RELATION_ITCONC; icon = RELATION_ITCONC;
@<Run out inter kind for activity@> =
arity = 1;
operands[0] = Kinds::unary_construction_material(K);
icon = ACTIVITY_ITCONC;
@<Run out inter kind for phrase@> = @<Run out inter kind for phrase@> =
icon = FUNCTION_ITCONC; icon = FUNCTION_ITCONC;
kind *X = NULL, *result = NULL; kind *X = NULL, *result = NULL;

View file

@ -330,10 +330,10 @@ must be at least one of these, so |struct void| is not allowed.
(*) |enum|, for which see below; (*) |enum|, for which see below;
(*) and then a raft of constructions convenient for Inform but which Inter (*) and then a raft of constructions convenient for Inform but which Inter
really knows nothing about: |column of T|, |table of T|, |relation of T1 to T2|, really knows nothing about: |activity on T|, |column of T|, |table of T|,
|description of T|, |rulebook of T|, and |rule T1 -> T2|. Perhaps these ought |relation of T1 to T2|, |description of T|, |rulebook of T|, and |rule T1 -> T2|.
to work via a general way for users to create new constructors, but for now Perhaps these ought to work via a general way for users to create new constructors,
they are hard-wired. They do nothing except to be distinct from each other, but for now they are hard-wired. They do nothing except to be distinct from each other,
so that Inform can label its data. so that Inform can label its data.
Inter applies the usual rules of covariance and contravariance when matching Inter applies the usual rules of covariance and contravariance when matching

View file

@ -24,6 +24,7 @@ invalidate existing Inter binary files, necessitating a bump of //The Inter Vers
@e TEXT_ITCONC @e TEXT_ITCONC
@e ENUM_ITCONC @e ENUM_ITCONC
@e LIST_ITCONC @e LIST_ITCONC
@e ACTIVITY_ITCONC
@e COLUMN_ITCONC @e COLUMN_ITCONC
@e TABLE_ITCONC @e TABLE_ITCONC
@e FUNCTION_ITCONC @e FUNCTION_ITCONC
@ -76,6 +77,7 @@ void InterTypes::initialise_constructors(void) {
InterTypes::init_con(TEXT_ITCONC, I"text", -2147483648, 2147483647, FALSE, TRUE, 0); InterTypes::init_con(TEXT_ITCONC, I"text", -2147483648, 2147483647, FALSE, TRUE, 0);
InterTypes::init_con(ENUM_ITCONC, I"enum", 0, 2147483647, TRUE, TRUE, 0); InterTypes::init_con(ENUM_ITCONC, I"enum", 0, 2147483647, TRUE, TRUE, 0);
InterTypes::init_con(LIST_ITCONC, I"list", -2147483648, 2147483647, FALSE, FALSE, 1); InterTypes::init_con(LIST_ITCONC, I"list", -2147483648, 2147483647, FALSE, FALSE, 1);
InterTypes::init_con(ACTIVITY_ITCONC, I"activity", -2147483648, 2147483647, FALSE, FALSE, 1);
InterTypes::init_con(COLUMN_ITCONC, I"column", -2147483648, 2147483647, FALSE, FALSE, 1); InterTypes::init_con(COLUMN_ITCONC, I"column", -2147483648, 2147483647, FALSE, FALSE, 1);
InterTypes::init_con(TABLE_ITCONC, I"table", -2147483648, 2147483647, FALSE, FALSE, 1); InterTypes::init_con(TABLE_ITCONC, I"table", -2147483648, 2147483647, FALSE, FALSE, 1);
InterTypes::init_con(FUNCTION_ITCONC, I"function", -2147483648, 2147483647, FALSE, FALSE, 2); InterTypes::init_con(FUNCTION_ITCONC, I"function", -2147483648, 2147483647, FALSE, FALSE, 2);
@ -376,6 +378,7 @@ inter_error_message *InterTypes::parse_semisimple(text_stream *text, inter_symbo
@<Parse rulebook syntax@>; @<Parse rulebook syntax@>;
@<Parse list syntax@>; @<Parse list syntax@>;
@<Parse activity syntax@>;
@<Parse column syntax@>; @<Parse column syntax@>;
@<Parse table syntax@>; @<Parse table syntax@>;
@<Parse description syntax@>; @<Parse description syntax@>;
@ -407,6 +410,15 @@ inter_error_message *InterTypes::parse_semisimple(text_stream *text, inter_symbo
return E; return E;
} }
@<Parse activity syntax@> =
if (Regexp::match(&mr, text, L"activity on (%C+)")) {
results->constructor_code = ACTIVITY_ITCONC;
inter_type conts_type = InterTypes::parse_simple(T, eloc, mr.exp[0], &E);
InterTypes::add_operand_to_isstd(results, T, conts_type);
Regexp::dispose_of(&mr);
return E;
}
@<Parse column syntax@> = @<Parse column syntax@> =
if (Regexp::match(&mr, text, L"column of (%C+)")) { if (Regexp::match(&mr, text, L"column of (%C+)")) {
results->constructor_code = COLUMN_ITCONC; results->constructor_code = COLUMN_ITCONC;
@ -597,6 +609,10 @@ void InterTypes::write_type_longhand(OUTPUT_STREAM, inter_type type) {
WRITE(" of "); WRITE(" of ");
InterTypes::write_type(OUT, InterTypes::type_operand(type, 0)); InterTypes::write_type(OUT, InterTypes::type_operand(type, 0));
break; break;
case ACTIVITY_ITCONC:
WRITE(" on ");
InterTypes::write_type(OUT, InterTypes::type_operand(type, 0));
break;
case RELATION_ITCONC: case RELATION_ITCONC:
WRITE(" of "); WRITE(" of ");
InterTypes::write_type(OUT, InterTypes::type_operand(type, 0)); InterTypes::write_type(OUT, InterTypes::type_operand(type, 0));

View file

@ -75,8 +75,8 @@ checks that we aren't doing that:
int Kinds::Behaviour::definite(kind *K) { int Kinds::Behaviour::definite(kind *K) {
if (K == NULL) return TRUE; if (K == NULL) return TRUE;
if (KindConstructors::is_definite(K->construct) == FALSE) return FALSE; if (KindConstructors::is_definite(K->construct) == FALSE) return FALSE;
int i, arity = KindConstructors::arity(K->construct); int arity = KindConstructors::arity(K->construct);
for (i=0; i<arity; i++) for (int i=0; i<arity; i++)
if (Kinds::Behaviour::definite(K->kc_args[i]) == FALSE) if (Kinds::Behaviour::definite(K->kc_args[i]) == FALSE)
return FALSE; return FALSE;
return TRUE; return TRUE;
@ -87,15 +87,15 @@ int Kinds::Behaviour::semidefinite(kind *K) {
if (K->construct == CON_KIND_VARIABLE) return TRUE; if (K->construct == CON_KIND_VARIABLE) return TRUE;
if (K->construct == CON_NIL) return FALSE; if (K->construct == CON_NIL) return FALSE;
if (KindConstructors::is_definite(K->construct) == FALSE) return FALSE; if (KindConstructors::is_definite(K->construct) == FALSE) return FALSE;
int i, arity = KindConstructors::arity(K->construct); int arity = KindConstructors::arity(K->construct);
if ((K->construct == CON_TUPLE_ENTRY) && (Kinds::eq(K->kc_args[1], K_void))) arity = 1; if ((K->construct == CON_TUPLE_ENTRY) && (Kinds::eq(K->kc_args[1], K_void))) arity = 1;
if (K->construct == CON_phrase) { if ((K->construct == CON_phrase) || (K->construct == CON_activity)) {
for (i=0; i<arity; i++) for (int i=0; i<arity; i++)
if ((Kinds::eq(K->kc_args[i], K_nil) == FALSE) && if ((Kinds::eq(K->kc_args[i], K_nil) == FALSE) &&
(Kinds::Behaviour::semidefinite(K->kc_args[i]) == FALSE)) (Kinds::Behaviour::semidefinite(K->kc_args[i]) == FALSE))
return FALSE; return FALSE;
} else { } else {
for (i=0; i<arity; i++) for (int i=0; i<arity; i++)
if (Kinds::Behaviour::semidefinite(K->kc_args[i]) == FALSE) if (Kinds::Behaviour::semidefinite(K->kc_args[i]) == FALSE)
return FALSE; return FALSE;
} }