1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-17 07:40:47 +03:00

Numerous bugs fixed in loading large textual Inter files

This commit is contained in:
Graham Nelson 2022-03-27 23:14:38 +01:00
parent fa8aa0f0a9
commit 4dea2b3159
35 changed files with 200 additions and 142 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6U68 'Krypton' (26 March 2022)
v10.1.0-alpha.1+6U69 'Krypton' (27 March 2022)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 26 March 2022
Build Number: 6U68
Build Date: 27 March 2022
Build Number: 6U69

View file

@ -275,21 +275,21 @@ many more of these.)
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTable::symbol_from_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">tab</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</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="named-paragraph-container code-font"><a href="1-ls.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Ensure the on-demand dictionary exists</span><span class="named-paragraph-number">8.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</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">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="1-ls.html#SP10" class="function-link"><span class="function-syntax">LargeScale::arch_constant_dec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTypes::unchecked</span><span class="plain-syntax">(), </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LargeScale::is_veneer_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_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">con_name</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">con_name</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">definition</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">D</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inode::get_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">) == </span><a href="1-ls.html#SP7" class="function-link"><span class="function-syntax">LargeScale::architecture_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Inode::tree</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbol::identifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_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">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">con_name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">home</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbol::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterPackage::tree</span><span class="plain-syntax">(</span><span class="identifier-syntax">home</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">home</span><span class="plain-syntax"> == </span><a href="1-ls.html#SP7" class="function-link"><span class="function-syntax">LargeScale::architecture_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbol::identifier</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_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">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">create_these_architectural_symbols_on_demand</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<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>

View file

@ -169,7 +169,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">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><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/>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/>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">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>

View file

@ -387,7 +387,7 @@ to access this: one following equations, the other not.
</p>
<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::symbol_from_ID_at_node</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">InterSymbolsTable::symbol_from_ID_at_node</span></span>:<br/>Inter Constructs - <a href="3-ic.html#SP19">&#167;19</a><br/>The Constant Construct - <a href="4-tcc2.html#SP7">&#167;7</a><br/>The Instance Construct - <a href="4-tic2.html#SP3">&#167;3</a>, <a href="4-tic2.html#SP5">&#167;5</a>, <a href="4-tic2.html#SP6">&#167;6</a><br/>The Package Construct - <a href="4-tpc.html#SP9">&#167;9</a><br/>The PackageType Construct - <a href="4-tpc2.html#SP4">&#167;4</a><br/>The Permission Construct - <a href="4-tpc3.html#SP3">&#167;3</a>, <a href="4-tpc3.html#SP6">&#167;6</a><br/>The Primitive Construct - <a href="4-tpc5.html#SP5">&#167;5</a>, <a href="4-tpc5.html#SP8">&#167;8</a><br/>The Property Construct - <a href="4-tpc6.html#SP5">&#167;5</a>, <a href="4-tpc6.html#SP6">&#167;6</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP6">&#167;6</a><br/>The Typename Construct - <a href="4-ttc.html#SP6">&#167;6</a><br/>The Variable Construct - <a href="4-tvc.html#SP6">&#167;6</a><br/>The Inv Construct - <a href="5-tic.html#SP9">&#167;9</a><br/>The Lab Construct - <a href="5-tlc.html#SP6">&#167;6</a><br/>The Label Construct - <a href="5-tlc2.html#SP6">&#167;6</a><br/>The Local Construct - <a href="5-tlc3.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbolsTable::symbol_from_ID_at_node</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">InterSymbolsTable::symbol_from_ID_at_node</span></span>:<br/>Inter Constructs - <a href="3-ic.html#SP19">&#167;19</a><br/>The Constant Construct - <a href="4-tcc2.html#SP7">&#167;7</a><br/>The Instance Construct - <a href="4-tic2.html#SP3">&#167;3</a>, <a href="4-tic2.html#SP6">&#167;6</a><br/>The Package Construct - <a href="4-tpc.html#SP9">&#167;9</a><br/>The PackageType Construct - <a href="4-tpc2.html#SP4">&#167;4</a><br/>The Permission Construct - <a href="4-tpc3.html#SP3">&#167;3</a>, <a href="4-tpc3.html#SP6">&#167;6</a><br/>The Primitive Construct - <a href="4-tpc5.html#SP5">&#167;5</a>, <a href="4-tpc5.html#SP8">&#167;8</a><br/>The Property Construct - <a href="4-tpc6.html#SP5">&#167;5</a>, <a href="4-tpc6.html#SP6">&#167;6</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP6">&#167;6</a><br/>The Typename Construct - <a href="4-ttc.html#SP6">&#167;6</a><br/>The Variable Construct - <a href="4-tvc.html#SP6">&#167;6</a><br/>The Inv Construct - <a href="5-tic.html#SP9">&#167;9</a><br/>The Lab Construct - <a href="5-tlc.html#SP6">&#167;6</a><br/>The Label Construct - <a href="5-tlc2.html#SP6">&#167;6</a><br/>The Local Construct - <a href="5-tlc3.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">x</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-st.html#SP12" class="function-link"><span class="function-syntax">InterSymbolsTable::symbol_from_ID</span></a><span class="plain-syntax">(</span><a href="2-pck.html#SP12" class="function-link"><span class="function-syntax">InterPackage::scope_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">instruction</span><span class="plain-syntax">[</span><span class="identifier-syntax">x</span><span class="plain-syntax">]);</span>
<span class="plain-syntax">}</span>
@ -589,7 +589,7 @@ for packages as a special case of URLs for symbols.
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_URL_SYMBOL_NAME_DEPTH</span><span class="plain-syntax"> </span><span class="constant-syntax">512</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterSymbolsTable::write_symbol_URL</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">InterSymbolsTable::write_symbol_URL</span></span>:<br/>Symbols - <a href="2-sym.html#SP21">&#167;21</a><br/>The Wiring - <a href="2-tw2.html#SP12">&#167;12</a><br/>Inter in Text Files - <a href="3-iitf.html#SP5_2">&#167;5.2</a>, <a href="3-iitf.html#SP10">&#167;10</a><br/>Verifying Inter - <a href="3-vi.html#SP2">&#167;2</a><br/>The Plug Construct - <a href="6-tpc.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterSymbolsTable::write_symbol_URL</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">InterSymbolsTable::write_symbol_URL</span></span>:<br/>Symbols - <a href="2-sym.html#SP21">&#167;21</a><br/>The Wiring - <a href="2-tw2.html#SP12">&#167;12</a><br/>Inter in Text Files - <a href="3-iitf.html#SP5_2">&#167;5.2</a>, <a href="3-iitf.html#SP10">&#167;10</a><br/>Verifying Inter - <a href="3-vi.html#SP2">&#167;2</a><br/>Inter Data Types - <a href="3-idt.html#SP19">&#167;19</a><br/>The Plug Construct - <a href="6-tpc.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="plain-syntax"> </span><span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">chain</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_URL_SYMBOL_NAME_DEPTH</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">chain_length</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="2-st.html#SP3" class="function-link"><span class="function-syntax">InterSymbolsTable::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_table</span><span class="plain-syntax">);</span>

View file

@ -162,7 +162,7 @@ metadata symbol: in practice that means if its name begins with <span class="ext
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b></p>
<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">InterSymbol::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">InterSymbol::package</span></span>:<br/><a href="2-sym.html#SP20">&#167;20</a><br/>The Wiring - <a href="2-tw2.html#SP12">&#167;12</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_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbol::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">InterSymbol::package</span></span>:<br/><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#SP4_2_2">&#167;4.2.2</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_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="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><a href="2-st.html#SP3" class="function-link"><span class="function-syntax">InterSymbolsTable::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_table</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -406,7 +406,7 @@ might be the node holding the instruction:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">definition</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterSymbol::is_defined</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">InterSymbol::is_defined</span></span>:<br/><a href="2-sym.html#SP9">&#167;9</a><br/>Transmigration - <a href="2-trn.html#SP3_6_1">&#167;3.6.1</a><br/>Inter Constructs - <a href="3-ic.html#SP7">&#167;7</a><br/>Inter in Text Files - <a href="3-iitf.html#SP12_14_1">&#167;12.14.1</a><br/>Verifying Inter - <a href="3-vi.html#SP1_2_2">&#167;1.2.2</a><br/>The Label Construct - <a href="5-tlc2.html#SP4">&#167;4</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterSymbol::is_defined</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">InterSymbol::is_defined</span></span>:<br/><a href="2-sym.html#SP9">&#167;9</a><br/>Transmigration - <a href="2-trn.html#SP3_6_1">&#167;3.6.1</a><br/>Inter Constructs - <a href="3-ic.html#SP7">&#167;7</a><br/>Verifying Inter - <a href="3-vi.html#SP1_2_2">&#167;1.2.2</a><br/>The Label Construct - <a href="5-tlc2.html#SP4">&#167;4</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="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-sym.html#SP15" class="function-link"><span class="function-syntax">InterSymbol::definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -466,7 +466,7 @@ in the current package. So:
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>&#167;19. Identifier name. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbol::identifier</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">InterSymbol::identifier</span></span>:<br/><a href="2-sym.html#SP11">&#167;11</a>, <a href="2-sym.html#SP20">&#167;20</a><br/>Packages - <a href="2-pck.html#SP7">&#167;7</a><br/>Symbols Tables - <a href="2-st.html#SP5_2">&#167;5.2</a>, <a href="2-st.html#SP5_3_3">&#167;5.3.3</a>, <a href="2-st.html#SP15_1_2">&#167;15.1.2</a>, <a href="2-st.html#SP17">&#167;17</a><br/>The Wiring - <a href="2-tw2.html#SP5">&#167;5</a>, <a href="2-tw2.html#SP5_1">&#167;5.1</a><br/>Transmigration - <a href="2-trn.html#SP3_6_1">&#167;3.6.1</a>, <a href="2-trn.html#SP4_1">&#167;4.1</a>, <a href="2-trn.html#SP4_1_1">&#167;4.1.1</a>, <a href="2-trn.html#SP4_2_1">&#167;4.2.1</a>, <a href="2-trn.html#SP4_2_1_1">&#167;4.2.1.1</a>, <a href="2-trn.html#SP4_2_2_1">&#167;4.2.2.1</a>, <a href="2-trn.html#SP4_2_2_3">&#167;4.2.2.3</a>, <a href="2-trn.html#SP5_1">&#167;5.1</a><br/>Inter Constructs - <a href="3-ic.html#SP7">&#167;7</a><br/>Inter in Binary Files - <a href="3-iibf.html#SP9_2_3_2_2">&#167;9.2.3.2.2</a><br/>Inter in Text Files - <a href="3-iitf.html#SP10">&#167;10</a><br/>Verifying Inter - <a href="3-vi.html#SP1_2_1">&#167;1.2.1</a>, <a href="3-vi.html#SP1_2_2">&#167;1.2.2</a>, <a href="3-vi.html#SP2">&#167;2</a>, <a href="3-vi.html#SP3">&#167;3</a>, <a href="3-vi.html#SP4">&#167;4</a><br/>Inter Value Pairs - <a href="3-ivp.html#SP22_2">&#167;22.2</a><br/>The Constant Construct - <a href="4-tcc2.html#SP7">&#167;7</a>, <a href="4-tcc2.html#SP9">&#167;9</a><br/>The Instance Construct - <a href="4-tic2.html#SP5">&#167;5</a><br/>The Package Construct - <a href="4-tpc.html#SP4">&#167;4</a>, <a href="4-tpc.html#SP7">&#167;7</a><br/>The PackageType Construct - <a href="4-tpc2.html#SP4">&#167;4</a><br/>The Permission Construct - <a href="4-tpc3.html#SP3">&#167;3</a>, <a href="4-tpc3.html#SP5">&#167;5</a><br/>The Primitive Construct - <a href="4-tpc5.html#SP3">&#167;3</a>, <a href="4-tpc5.html#SP5">&#167;5</a><br/>The Property Construct - <a href="4-tpc6.html#SP5">&#167;5</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP3">&#167;3</a>, <a href="4-tpc7.html#SP5">&#167;5</a><br/>The Typename Construct - <a href="4-ttc.html#SP5">&#167;5</a><br/>The Variable Construct - <a href="4-tvc.html#SP5">&#167;5</a><br/>The Inv Construct - <a href="5-tic.html#SP5_2">&#167;5.2</a>, <a href="5-tic.html#SP5_3">&#167;5.3</a>, <a href="5-tic.html#SP8">&#167;8</a><br/>The Lab Construct - <a href="5-tlc.html#SP5">&#167;5</a><br/>The Label Construct - <a href="5-tlc2.html#SP3">&#167;3</a>, <a href="5-tlc2.html#SP5">&#167;5</a><br/>The Local Construct - <a href="5-tlc3.html#SP5">&#167;5</a><br/>The Plug Construct - <a href="6-tpc.html#SP3">&#167;3</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="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSymbol::identifier</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">InterSymbol::identifier</span></span>:<br/><a href="2-sym.html#SP11">&#167;11</a>, <a href="2-sym.html#SP20">&#167;20</a><br/>Packages - <a href="2-pck.html#SP7">&#167;7</a><br/>Symbols Tables - <a href="2-st.html#SP5_2">&#167;5.2</a>, <a href="2-st.html#SP5_3_3">&#167;5.3.3</a>, <a href="2-st.html#SP15_1_2">&#167;15.1.2</a>, <a href="2-st.html#SP17">&#167;17</a><br/>The Wiring - <a href="2-tw2.html#SP5">&#167;5</a>, <a href="2-tw2.html#SP5_1">&#167;5.1</a><br/>Transmigration - <a href="2-trn.html#SP3_6_1">&#167;3.6.1</a>, <a href="2-trn.html#SP4_1">&#167;4.1</a>, <a href="2-trn.html#SP4_1_1">&#167;4.1.1</a>, <a href="2-trn.html#SP4_2_1">&#167;4.2.1</a>, <a href="2-trn.html#SP4_2_1_1">&#167;4.2.1.1</a>, <a href="2-trn.html#SP4_2_2_1">&#167;4.2.2.1</a>, <a href="2-trn.html#SP4_2_2_3">&#167;4.2.2.3</a>, <a href="2-trn.html#SP5_1">&#167;5.1</a><br/>Inter Constructs - <a href="3-ic.html#SP7">&#167;7</a><br/>Inter in Binary Files - <a href="3-iibf.html#SP9_2_3_2_2">&#167;9.2.3.2.2</a><br/>Inter in Text Files - <a href="3-iitf.html#SP10">&#167;10</a><br/>Verifying Inter - <a href="3-vi.html#SP1_2_1">&#167;1.2.1</a>, <a href="3-vi.html#SP1_2_2">&#167;1.2.2</a>, <a href="3-vi.html#SP2">&#167;2</a>, <a href="3-vi.html#SP3">&#167;3</a>, <a href="3-vi.html#SP4">&#167;4</a><br/>Inter Value Pairs - <a href="3-ivp.html#SP22_2">&#167;22.2</a><br/>The Constant Construct - <a href="4-tcc2.html#SP7">&#167;7</a>, <a href="4-tcc2.html#SP9">&#167;9</a><br/>The Instance Construct - <a href="4-tic2.html#SP5">&#167;5</a><br/>The Package Construct - <a href="4-tpc.html#SP4">&#167;4</a>, <a href="4-tpc.html#SP7">&#167;7</a><br/>The PackageType Construct - <a href="4-tpc2.html#SP4">&#167;4</a><br/>The Permission Construct - <a href="4-tpc3.html#SP3">&#167;3</a><br/>The Primitive Construct - <a href="4-tpc5.html#SP3">&#167;3</a>, <a href="4-tpc5.html#SP5">&#167;5</a><br/>The Property Construct - <a href="4-tpc6.html#SP5">&#167;5</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP3">&#167;3</a><br/>The Typename Construct - <a href="4-ttc.html#SP5">&#167;5</a><br/>The Variable Construct - <a href="4-tvc.html#SP5">&#167;5</a><br/>The Inv Construct - <a href="5-tic.html#SP5_2">&#167;5.2</a>, <a href="5-tic.html#SP5_3">&#167;5.3</a>, <a href="5-tic.html#SP8">&#167;8</a><br/>The Lab Construct - <a href="5-tlc.html#SP5">&#167;5</a><br/>The Label Construct - <a href="5-tlc2.html#SP3">&#167;3</a>, <a href="5-tlc2.html#SP5">&#167;5</a><br/>The Local Construct - <a href="5-tlc3.html#SP5">&#167;5</a><br/>The Plug Construct - <a href="6-tpc.html#SP3">&#167;3</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="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">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">identifier</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -467,7 +467,9 @@ there are three bad possibilities:
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_SYMBOLS_TABLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</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">if</span><span class="plain-syntax"> (</span><a href="2-tw2.html#SP2" class="function-link"><span class="function-syntax">Wiring::is_wired</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="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">target</span><span class="plain-syntax"> = </span><a href="2-tw2.html#SP3" class="function-link"><span class="function-syntax">Wiring::cable_end</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> == </span><span class="identifier-syntax">LargeScale::architecture_package</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">target_package</span><span class="plain-syntax"> = </span><a href="2-sym.html#SP3" class="function-link"><span class="function-syntax">InterSymbol::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">target</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">target_package</span><span class="plain-syntax"> ==</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::architecture_package</span><span class="plain-syntax">(</span><a href="2-pck.html#SP4" class="function-link"><span class="function-syntax">InterPackage::tree</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">target_package</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-trn.html#SP4_2_2_1" class="named-paragraph-link"><span class="named-paragraph">S is wired to an architectural symbol in the origin tree</span><span class="named-paragraph-number">4.2.2.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><a href="2-sym.html#SP13" class="function-link"><span class="function-syntax">InterSymbol::is_plug</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">target</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-trn.html#SP4_2_2_2" class="named-paragraph-link"><span class="named-paragraph">S is wired to a loose plug in the origin tree</span><span class="named-paragraph-number">4.2.2.2</span></a></span>

View file

@ -338,6 +338,8 @@ but give it no syntax. If so, it will be inexpressible in textual Inter code.
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> += </span><span class="constant-syntax">5</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">regexp</span><span class="plain-syntax">, </span><span class="string-syntax">"(%%d+)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::includes_wide_string_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"TOKENS"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> += </span><span class="constant-syntax">5</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">regexp</span><span class="plain-syntax">, </span><span class="string-syntax">"(%%c+)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::includes_wide_string_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"MINTOKENS"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> += </span><span class="constant-syntax">8</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">regexp</span><span class="plain-syntax">, </span><span class="string-syntax">"(%%c+?)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::includes_wide_string_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"TOKEN"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> += </span><span class="constant-syntax">4</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">regexp</span><span class="plain-syntax">, </span><span class="string-syntax">"(%%C+)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::includes_wide_string_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"TEXT"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) {</span>

View file

@ -700,7 +700,7 @@ just print that name, <span class="extract"><span class="extract-syntax">K_whate
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::write_type</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">InterTypes::write_type</span></span>:<br/><a href="3-idt.html#SP20">&#167;20</a>, <a href="3-idt.html#SP22_5">&#167;22.5</a><br/>Inter in Text Files - <a href="3-iitf.html#SP13">&#167;13</a><br/>The Typename Construct - <a href="4-ttc.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">type</span><span class="plain-syntax">.</span><span class="element-syntax">type_name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP10" class="function-link"><span class="function-syntax">TextualInter::write_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">type</span><span class="plain-syntax">.</span><span class="element-syntax">type_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-st.html#SP17" class="function-link"><span class="function-syntax">InterSymbolsTable::write_symbol_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">type</span><span class="plain-syntax">.</span><span class="element-syntax">type_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="3-idt.html#SP20" class="function-link"><span class="function-syntax">InterTypes::write_type_longhand</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">type</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -759,7 +759,7 @@ just print that name, <span class="extract"><span class="extract-syntax">K_whate
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::is_enumerated</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">InterTypes::is_enumerated</span></span>:<br/>Inter in Text Files - <a href="3-iitf.html#SP12_14_1">&#167;12.14.1</a><br/>The Instance Construct - <a href="4-tic2.html#SP3">&#167;3</a>, <a href="4-tic2.html#SP4_1">&#167;4.1</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></span></button><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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::is_enumerated</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">InterTypes::is_enumerated</span></span>:<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></span></button><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_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">itc</span><span class="plain-syntax"> = </span><a href="3-idt.html#SP11" class="function-link"><span class="function-syntax">InterTypes::constructor</span></a><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">itc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">is_enumerated</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -770,6 +770,13 @@ just print that name, <span class="extract"><span class="extract-syntax">K_whate
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">N</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">itc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">min_value</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">itc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">max_value</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::unsigned_literal_is_in_range</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">InterTypes::unsigned_literal_is_in_range</span></span>:<br/>Inter in Text Files - <a href="3-iitf.html#SP12_2">&#167;12.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">long</span><span class="plain-syntax"> </span><span class="reserved-syntax">long</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">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_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">itc</span><span class="plain-syntax"> = </span><a href="3-idt.html#SP11" class="function-link"><span class="function-syntax">InterTypes::constructor</span></a><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">N</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">itc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">max_value</span><span class="plain-syntax"> - </span><span class="identifier-syntax">itc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">min_value</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>
</pre>
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>&#167;22. </b>This is what matters: whether we allow a value of type <span class="extract"><span class="extract-syntax">A</span></span> to be used where
a value of type <span class="extract"><span class="extract-syntax">B</span></span> is expected.
@ -783,7 +790,7 @@ split into four cases as to whether they are the same or different.
</p>
<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">InterTypes::can_be_used_as</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">InterTypes::can_be_used_as</span></span>:<br/><a href="3-idt.html#SP22_4">&#167;22.4</a><br/>Inter in Text Files - <a href="3-iitf.html#SP12_14_1">&#167;12.14.1</a><br/>Inter Value Pairs - <a href="3-ivp.html#SP22_2">&#167;22.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">inter_error_message</span><span class="plain-syntax"> *</span><span class="function-syntax">InterTypes::can_be_used_as</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">InterTypes::can_be_used_as</span></span>:<br/><a href="3-idt.html#SP22_4">&#167;22.4</a><br/>Inter in Text Files - <a href="3-iitf.html#SP12_14_1">&#167;12.14.1</a><br/>Inter Value Pairs - <a href="3-ivp.html#SP22_2">&#167;22.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</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">S</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_type_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A_itc</span><span class="plain-syntax"> = </span><a href="3-idt.html#SP11" class="function-link"><span class="function-syntax">InterTypes::constructor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">A</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">B_itc</span><span class="plain-syntax"> = </span><a href="3-idt.html#SP11" class="function-link"><span class="function-syntax">InterTypes::constructor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">);</span>
@ -920,7 +927,7 @@ function arguments are contravariant.
</p>
<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::of_symbol</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">InterTypes::of_symbol</span></span>:<br/>Inter in Text Files - <a href="3-iitf.html#SP12_14_1">&#167;12.14.1</a><br/>Inter Value Pairs - <a href="3-ivp.html#SP22_2">&#167;22.2</a><br/>The Instance Construct - <a href="4-tic2.html#SP6">&#167;6</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">symb</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inter_type</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::of_symbol</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">InterTypes::of_symbol</span></span>:<br/>Inter in Text Files - <a href="3-iitf.html#SP12_14_1">&#167;12.14.1</a><br/>Inter Value Pairs - <a href="3-ivp.html#SP22_2">&#167;22.2</a><br/>The Instance Construct - <a href="4-tic2.html#SP6">&#167;6</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">symb</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">symb</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><a href="3-idt.html#SP12" class="function-link"><span class="function-syntax">InterTypes::unchecked</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="2-sym.html#SP15" class="function-link"><span class="function-syntax">InterSymbol::definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">symb</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">D</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><a href="3-idt.html#SP12" class="function-link"><span class="function-syntax">InterTypes::unchecked</span></a><span class="plain-syntax">();</span>
@ -931,7 +938,7 @@ function arguments are contravariant.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-idt.html#SP12" class="function-link"><span class="function-syntax">InterTypes::unchecked</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::expresses_value</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">InterTypes::expresses_value</span></span>:<br/>Inter Value Pairs - <a href="3-ivp.html#SP22_2">&#167;22.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">symb</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterTypes::expresses_value</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">InterTypes::expresses_value</span></span>:<br/>Inter Value Pairs - <a href="3-ivp.html#SP22_2">&#167;22.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">symb</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="2-sym.html#SP15" class="function-link"><span class="function-syntax">InterSymbol::definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">symb</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">D</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_construct</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IC</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>

View file

@ -130,7 +130,7 @@ of ways.)
</p>
<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>, <a href="3-iitf.html#SP12_14">&#167;12.14</a>, <a href="3-iitf.html#SP12_14_1">&#167;12.14.1</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#SP18">&#167;18</a><br/>The Instance Construct - <a href="4-tic2.html#SP4_1">&#167;4.1</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>, <a href="3-iitf.html#SP12_14">&#167;12.14</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#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="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>

View file

@ -318,6 +318,7 @@ resolve forward references at the end of the parsing process &mdash; see below.
<span class="plain-syntax"> </span><a href="2-tw2.html#SP7" class="function-link"><span class="function-syntax">Wiring::wire_to_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</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">S</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-iitf.html#SP5">&#167;5</a>.</li></ul>
@ -329,14 +330,10 @@ But it really doesn't need to catch every possible error; this is Inter, not Inf
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="2-sym.html#SP15" class="function-link"><span class="function-syntax">InterSymbol::definition</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-sym.html#SP18" class="function-link"><span class="function-syntax">InterSymbol::defined_elsewhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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><a href="2-sym.html#SP9" class="function-link"><span class="function-syntax">InterSymbol::misc_but_undefined</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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">D</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><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">"undefined symbol"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">eloc</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">if</span><span class="plain-syntax"> ((</span><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::isnt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">construct</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="2-sym.html#SP9" class="function-link"><span class="function-syntax">InterSymbol::misc_but_undefined</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</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">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="2-sym.html#SP15" class="function-link"><span class="function-syntax">InterSymbol::definition</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">D</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::isnt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">construct</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">err</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"symbol has type %d not %d: "</span><span class="plain-syntax">, </span><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::get_construct_ID</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">), </span><span class="identifier-syntax">construct</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-st.html#SP17" class="function-link"><span class="function-syntax">InterSymbolsTable::write_symbol_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
@ -472,7 +469,7 @@ the filter test.
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. Utility functions for writing construct lines. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextualInter::write_symbol</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">TextualInter::write_symbol</span></span>:<br/><a href="3-iitf.html#SP12_13">&#167;12.13</a><br/>Inter Data Types - <a href="3-idt.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextualInter::write_symbol</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">TextualInter::write_symbol</span></span>:<br/><a href="3-iitf.html#SP12_13">&#167;12.13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tw2.html#SP2" class="function-link"><span class="function-syntax">Wiring::is_wired</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="2-st.html#SP17" class="function-link"><span class="function-syntax">InterSymbolsTable::write_symbol_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="2-tw2.html#SP3" class="function-link"><span class="function-syntax">Wiring::cable_end</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="reserved-syntax">else</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>
@ -482,7 +479,7 @@ the filter test.
<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">TextualInter::write_symbol_from</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">TextualInter::write_symbol_from</span></span>:<br/><a href="3-iitf.html#SP13">&#167;13</a><br/>The Inv Construct - <a href="5-tic.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextualInter::write_symbol_from</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">TextualInter::write_symbol_from</span></span>:<br/><a href="3-iitf.html#SP13">&#167;13</a><br/>The Instance Construct - <a href="4-tic2.html#SP5">&#167;5</a><br/>The Permission Construct - <a href="4-tpc3.html#SP5">&#167;5</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP5">&#167;5</a><br/>The Typename Construct - <a href="4-ttc.html#SP5">&#167;5</a><br/>The Inv Construct - <a href="5-tic.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">field</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#SP12" class="function-link"><span class="function-syntax">InterSymbolsTable::symbol_from_ID_not_following</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="2-pck.html#SP12" class="function-link"><span class="function-syntax">InterPackage::scope_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">instruction</span><span class="plain-syntax">[</span><span class="identifier-syntax">field</span><span class="plain-syntax">]);</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP10" class="function-link"><span class="function-syntax">TextualInter::write_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
@ -564,7 +561,7 @@ outer structure:
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">first_char</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">last_char</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::get_last_char</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_identifier</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">Characters::isalpha</span><span class="plain-syntax">(</span><span class="identifier-syntax">first_char</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">Characters::isalpha</span><span class="plain-syntax">(</span><span class="identifier-syntax">first_char</span><span class="plain-syntax">)) || (</span><span class="identifier-syntax">first_char</span><span class="plain-syntax"> == </span><span class="character-syntax">'_'</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">is_identifier</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</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">Characters::isalpha</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
@ -583,6 +580,7 @@ outer structure:
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">) == </span><span class="character-syntax">'#'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">) == </span><span class="character-syntax">'#'</span><span class="plain-syntax">)) </span><span class="identifier-syntax">is_identifier</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-iitf.html#SP12_2" class="named-paragraph-link"><span class="named-paragraph">Parse numeric literal syntax</span><span class="named-paragraph-number">12.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-iitf.html#SP12_4" class="named-paragraph-link"><span class="named-paragraph">Parse text literal syntax</span><span class="named-paragraph-number">12.4</span></a></span><span class="plain-syntax">;</span>
@ -636,8 +634,13 @@ or (unsigned) binary, but cannot be printed back in binary.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pos</span><span class="plain-syntax">.</span><span class="element-syntax">index</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">34</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">"value out of range"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">eloc</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sign</span><span class="plain-syntax">*</span><span class="identifier-syntax">N</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#SP21" class="function-link"><span class="function-syntax">InterTypes::literal_is_in_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">type_wanted</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><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">"value out of range"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">base</span><span class="plain-syntax"> == </span><span class="constant-syntax">10</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#SP21" class="function-link"><span class="function-syntax">InterTypes::literal_is_in_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">type_wanted</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><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">"value out of range"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</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">else</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#SP21" class="function-link"><span class="function-syntax">InterTypes::unsigned_literal_is_in_range</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">type_wanted</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><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">"value out of range"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">eloc</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sign</span><span class="plain-syntax"> == -1) *</span><span class="identifier-syntax">pair</span><span class="plain-syntax"> = </span><a href="3-ivp.html#SP4" class="function-link"><span class="function-syntax">InterValuePairs::signed_number</span></a><span class="plain-syntax">((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pair</span><span class="plain-syntax"> = </span><a href="3-ivp.html#SP4" class="function-link"><span class="function-syntax">InterValuePairs::number_in_base</span></a><span class="plain-syntax">((</span><span class="constant-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">base</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>
@ -820,8 +823,6 @@ one above.
</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><a href="3-idt.html#SP21" class="function-link"><span class="function-syntax">InterTypes::is_enumerated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">type_wanted</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="2-sym.html#SP15" class="function-link"><span class="function-syntax">InterSymbol::is_defined</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">symb</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><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">"undefined symbol"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</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_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">symbol_type</span><span class="plain-syntax"> = </span><a href="3-idt.html#SP23" class="function-link"><span class="function-syntax">InterTypes::of_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">symb</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">E</span><span class="plain-syntax"> = </span><a href="3-idt.html#SP22" class="function-link"><span class="function-syntax">InterTypes::can_be_used_as</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">symbol_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">type_wanted</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</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>

View file

@ -223,11 +223,7 @@ the program has not yet been loaded); but it cannot be the wrong sort of thing.
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="2-sym.html#SP15" class="function-link"><span class="function-syntax">InterSymbol::definition</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-sym.html#SP18" class="function-link"><span class="function-syntax">InterSymbol::defined_elsewhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</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><a href="2-sym.html#SP9" class="function-link"><span class="function-syntax">InterSymbol::misc_but_undefined</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</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">D</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><a href="2-in.html#SP15" class="function-link"><span class="function-syntax">Inode::error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"undefined symbol"</span><span class="plain-syntax">, </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">construct</span><span class="plain-syntax"> != </span><span class="constant-syntax">INVALID_IST</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::isnt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">construct</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="2-sym.html#SP18" class="function-link"><span class="function-syntax">InterSymbol::defined_elsewhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</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-sym.html#SP9" class="function-link"><span class="function-syntax">InterSymbol::misc_but_undefined</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</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">construct</span><span class="plain-syntax"> != </span><span class="constant-syntax">INVALID_IST</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">D</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::isnt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">construct</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">err</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"symbol has type %d not %d: "</span><span class="plain-syntax">, </span><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::get_construct_ID</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">), </span><span class="identifier-syntax">construct</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-st.html#SP17" class="function-link"><span class="function-syntax">InterSymbolsTable::write_symbol_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>

View file

@ -82,7 +82,7 @@ function togglePopup(material_id) {
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ConstantInstruction::define_construct</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ConstantInstruction::define_construct</span></span>:<br/>Inter Constructs - <a href="3-ic.html#SP15">&#167;15</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">inter_construct</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IC</span><span class="plain-syntax"> = </span><a href="3-ic.html#SP1" class="function-link"><span class="function-syntax">InterInstruction::create_construct</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CONSTANT_IST</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"constant"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ic.html#SP2" class="function-link"><span class="function-syntax">InterInstruction::defines_symbol_in_fields</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IC</span><span class="plain-syntax">, </span><span class="constant-syntax">DEFN_CONST_IFLD</span><span class="plain-syntax">, </span><span class="constant-syntax">TYPE_CONST_IFLD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ic.html#SP8" class="function-link"><span class="function-syntax">InterInstruction::specify_syntax</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"constant TOKENS = TOKENS"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ic.html#SP8" class="function-link"><span class="function-syntax">InterInstruction::specify_syntax</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"constant MINTOKENS = TOKENS"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ic.html#SP4" class="function-link"><span class="function-syntax">InterInstruction::data_extent_at_least</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IC</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ic.html#SP3" class="function-link"><span class="function-syntax">InterInstruction::permit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IC</span><span class="plain-syntax">, </span><span class="constant-syntax">INSIDE_PLAIN_PACKAGE_ICUP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">IC</span><span class="plain-syntax">, </span><span class="constant-syntax">CONSTRUCT_READ_MTID</span><span class="plain-syntax">, </span><a href="4-tcc2.html#SP6" class="function-link"><span class="function-syntax">ConstantInstruction::read</span></a><span class="plain-syntax">);</span>

View file

@ -191,8 +191,6 @@ the typename_s that it has a new instance.
<span class="plain-syntax"> </span><span class="identifier-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Regexp::create_mr</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">type_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"%((%c+)%)"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inst_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><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">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </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><a href="3-idt.html#SP21" class="function-link"><span class="function-syntax">InterTypes::is_enumerated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inst_type</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">E</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">"not an enumerated type"</span><span class="plain-syntax">, </span><span class="identifier-syntax">type_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="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">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">E</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
@ -220,9 +218,9 @@ the typename_s that it has a new instance.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InstanceInstruction::write</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">InstanceInstruction::write</span></span>:<br/><a href="4-tic2.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_construct</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IC</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instance_s</span><span class="plain-syntax"> = </span><a href="4-tic2.html#SP6" class="function-link"><span class="function-syntax">InstanceInstruction::instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">typename_s</span><span class="plain-syntax"> = </span><a href="2-st.html#SP13" class="function-link"><span class="function-syntax">InterSymbolsTable::symbol_from_ID_at_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">TYPE_INST_IFLD</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">"instance (%S) %S = "</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">typename_s</span><span class="plain-syntax">), </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">instance_s</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"instance ("</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP10" class="function-link"><span class="function-syntax">TextualInter::write_symbol_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">TYPE_INST_IFLD</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">") %S = "</span><span class="plain-syntax">, </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">instance_s</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP12" class="function-link"><span class="function-syntax">TextualInter::write_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><a href="3-ivp.html#SP19" class="function-link"><span class="function-syntax">InterValuePairs::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">VAL1_INST_IFLD</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -206,30 +206,32 @@ the new permission to the list for the owner and for the property.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PermissionInstruction::write</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">PermissionInstruction::write</span></span>:<br/><a href="4-tpc3.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_construct</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IC</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop_s</span><span class="plain-syntax"> = </span><a href="4-tpc3.html#SP6" class="function-link"><span class="function-syntax">PermissionInstruction::property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner_s</span><span class="plain-syntax"> = </span><a href="4-tpc3.html#SP6" class="function-link"><span class="function-syntax">PermissionInstruction::owner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">storage_s</span><span class="plain-syntax"> = </span><a href="4-tpc3.html#SP6" class="function-link"><span class="function-syntax">PermissionInstruction::storage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</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">"permission for %S to have %S"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">owner_s</span><span class="plain-syntax">), </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop_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">storage_s</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S"</span><span class="plain-syntax">, </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">storage_s</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">"permission for "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP10" class="function-link"><span class="function-syntax">TextualInter::write_symbol_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">OWNER_PERM_IFLD</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">" to have "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP10" class="function-link"><span class="function-syntax">TextualInter::write_symbol_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">PROP_PERM_IFLD</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-tpc3.html#SP6" class="function-link"><span class="function-syntax">PermissionInstruction::storage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</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">" "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP10" class="function-link"><span class="function-syntax">TextualInter::write_symbol_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">STORAGE_PERM_IFLD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Access functions. </b></p>
<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">PermissionInstruction::property</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">PermissionInstruction::property</span></span>:<br/><a href="4-tpc3.html#SP5">&#167;5</a><br/>The PropertyValue Construct - <a href="4-tpc7.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">PermissionInstruction::property</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">PermissionInstruction::property</span></span>:<br/>The PropertyValue Construct - <a href="4-tpc7.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</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><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::isnt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">PERMISSION_IST</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><a href="2-st.html#SP13" class="function-link"><span class="function-syntax">InterSymbolsTable::symbol_from_ID_at_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">PROP_PERM_IFLD</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">PermissionInstruction::owner</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">PermissionInstruction::owner</span></span>:<br/><a href="4-tpc3.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">PermissionInstruction::owner</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</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><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::isnt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">PERMISSION_IST</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><a href="2-st.html#SP13" class="function-link"><span class="function-syntax">InterSymbolsTable::symbol_from_ID_at_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">OWNER_PERM_IFLD</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">PermissionInstruction::storage</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">PermissionInstruction::storage</span></span>:<br/><a href="4-tpc3.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">PermissionInstruction::storage</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">PermissionInstruction::storage</span></span>:<br/><a href="4-tpc3.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</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><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::isnt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">PERMISSION_IST</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">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">instruction</span><span class="plain-syntax">[</span><span class="constant-syntax">STORAGE_PERM_IFLD</span><span class="plain-syntax">] == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>

View file

@ -233,23 +233,24 @@ value to the list of properties of the owner.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyValueInstruction::write</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">PropertyValueInstruction::write</span></span>:<br/><a href="4-tpc7.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_construct</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IC</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop_s</span><span class="plain-syntax"> = </span><a href="4-tpc7.html#SP6" class="function-link"><span class="function-syntax">PropertyValueInstruction::property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner_s</span><span class="plain-syntax"> = </span><a href="4-tpc7.html#SP6" class="function-link"><span class="function-syntax">PropertyValueInstruction::owner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</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">"propertyvalue %S of %S = "</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop_s</span><span class="plain-syntax">), </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">owner_s</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">"propertyvalue "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP10" class="function-link"><span class="function-syntax">TextualInter::write_symbol_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">PROP_PVAL_IFLD</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-iitf.html#SP10" class="function-link"><span class="function-syntax">TextualInter::write_symbol_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">OWNER_PVAL_IFLD</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">" = "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP12" class="function-link"><span class="function-syntax">TextualInter::write_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><a href="4-tpc7.html#SP6" class="function-link"><span class="function-syntax">PropertyValueInstruction::value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Access functions. </b></p>
<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">PropertyValueInstruction::property</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">PropertyValueInstruction::property</span></span>:<br/><a href="4-tpc7.html#SP3">&#167;3</a>, <a href="4-tpc7.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyValueInstruction::property</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">PropertyValueInstruction::property</span></span>:<br/><a href="4-tpc7.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</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><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::isnt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTYVALUE_IST</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><a href="2-st.html#SP13" class="function-link"><span class="function-syntax">InterSymbolsTable::symbol_from_ID_at_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">PROP_PVAL_IFLD</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">PropertyValueInstruction::owner</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PropertyValueInstruction::owner</span></span>:<br/><a href="4-tpc7.html#SP3">&#167;3</a>, <a href="4-tpc7.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyValueInstruction::owner</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PropertyValueInstruction::owner</span></span>:<br/><a href="4-tpc7.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</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><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::isnt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">PROPERTYVALUE_IST</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><a href="2-st.html#SP13" class="function-link"><span class="function-syntax">InterSymbolsTable::symbol_from_ID_at_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">OWNER_PVAL_IFLD</span><span class="plain-syntax">);</span>

View file

@ -229,7 +229,8 @@ length is flexible: there can be any number of operands from 0 upwards.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"typename %S "</span><span class="plain-syntax">, </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">typename_s</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">super</span><span class="plain-syntax"> = </span><a href="4-ttc.html#SP6" class="function-link"><span class="function-syntax">TypenameInstruction::super</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">typename_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">super</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">"&lt;= %S"</span><span class="plain-syntax">, </span><a href="2-sym.html#SP19" class="function-link"><span class="function-syntax">InterSymbol::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">super</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">"&lt;= "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-iitf.html#SP10" class="function-link"><span class="function-syntax">TextualInter::write_symbol_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">SUPER_TYPENAME_IFLD</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"= "</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_typename_definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">typename_s</span><span class="plain-syntax">);</span>

View file

@ -18,6 +18,7 @@
<script src="../docs-assets/Bigfoot.js"></script>
<link href="../docs-assets/Bigfoot.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/ConsoleText-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
@ -70,7 +71,7 @@
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Compiler Tools</a></li><li><a href="index.html">inter</a></li><li><a href="index.html#M">Manual</a></li><li><b>Inform Organisation</b></li></ul></div>
<p class="purpose">The standard hierarchy of inter code generated by Inform.</p>
<ul class="toc"><li><a href="M-io.html#SP1">&#167;1. Status</a></li><li><a href="M-io.html#SP2">&#167;2. Global area and main</a></li><li><a href="M-io.html#SP3">&#167;3. Compilation modules</a></li><li><a href="M-io.html#SP8">&#167;8. Function packages</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="M-io.html#SP1">&#167;1. Status</a></li><li><a href="M-io.html#SP2">&#167;2. Global area and main</a></li><li><a href="M-io.html#SP3">&#167;3. Compilation modules</a></li><li><a href="M-io.html#SP8">&#167;8. Function packages</a></li><li><a href="M-io.html#SP9">&#167;9. Looking at the Inter produced</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Status. </b>The line between what is part of the Inter specification, and what is simply
a convention about its use, is a fine one. For example, Inter allows
@ -271,6 +272,19 @@ stack frame is disposed of again. This is all transparent to the user, who
simply calls <span class="extract"><span class="extract-syntax">call</span></span> and doesn't need to know which mechanism is in play.
</p>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. Looking at the Inter produced. </b>The following commands produce the final state of the Inter code for the test
case <span class="extract"><span class="extract-syntax">Acidity</span></span>, in binary and textual form:
</p>
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
<span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">'inform7/Tangled/inform7'</span><span class="ConsoleText-identifier-syntax"> -source</span><span class="ConsoleText-plain-syntax"> inform7/Tests/Test\ Cases/Acidity.txt</span><span class="ConsoleText-identifier-syntax"> -o</span><span class="ConsoleText-plain-syntax"> Acidity.interb</span><span class="ConsoleText-identifier-syntax"> -format</span><span class="ConsoleText-plain-syntax">=binary</span>
<span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">'inform7/Tangled/inform7'</span><span class="ConsoleText-identifier-syntax"> -source</span><span class="ConsoleText-plain-syntax"> inform7/Tests/Test\ Cases/Acidity.txt</span><span class="ConsoleText-identifier-syntax"> -o</span><span class="ConsoleText-plain-syntax"> Acidity.intert</span><span class="ConsoleText-identifier-syntax"> -format</span><span class="ConsoleText-plain-syntax">=text</span>
</pre>
<p class="commentary">Be warned that they are large: they have several large kits linked into them
by the time they have reached this final state, and thus contain many modules.
<span class="extract"><span class="ConsoleText-extract-syntax">Acidity.intert</span></span> runs to about 250,000 lines of textual Inter.
</p>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="M-ia.html">&#10094;</a></li><li class="progresscurrentchapter">M</li><li class="progresssection"><a href="M-ui.html">ui</a></li><li class="progresssection"><a href="M-ti.html">ti</a></li><li class="progresssection"><a href="M-dpiti.html">dpiti</a></li><li class="progresssection"><a href="M-cpiti.html">cpiti</a></li><li class="progresssection"><a href="M-ip.html">ip</a></li><li class="progresssection"><a href="M-ia.html">ia</a></li><li class="progresscurrent">io</li><li class="progresssection"><a href="M-pas.html">pas</a></li><li class="progresssection"><a href="M-rc.html">rc</a></li><li class="progresschapter"><a href="1-mn.html">1</a></li><li class="progressnext"><a href="M-pas.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -259,7 +259,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
<span class="plain-syntax"> </span><span class="constant-syntax">H_BEGIN_DECLARATIONS</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hrr.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Establish locations for material created by the compiler</span><span class="named-paragraph-number">8.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hrr.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Establish locations for material expected to be added by linking</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hrr.html#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Prevent arcbitectural symbols from being doubly defined</span><span class="named-paragraph-number">8.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hrr.html#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Prevent architectural symbols from being doubly defined</span><span class="named-paragraph-number">8.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="constant-syntax">H_END_DECLARATIONS</span>
<span class="plain-syntax">}</span>
</pre>
@ -299,7 +299,7 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hrr.html#SP8_2_2" class="named-paragraph-link"><span class="named-paragraph">Establish architecturak resources</span><span class="named-paragraph-number">8.2.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hrr.html#SP8_2_2" class="named-paragraph-link"><span class="named-paragraph">Establish architectural resources</span><span class="named-paragraph-number">8.2.2</span></a></span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-hrr.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_1_1" class="paragraph-anchor"></a><b>&#167;8.1.1. Basics. </b></p>
@ -2135,7 +2135,7 @@ ones which the //inform7//-compiled code needs to refer to.
<span class="definition-keyword">enum</span> <span class="constant-syntax">MAX_POSITIVE_NUMBER_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">MIN_NEGATIVE_NUMBER_HL</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8_2_2" class="paragraph-anchor"></a><b>&#167;8.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Establish architecturak resources</span><span class="named-paragraph-number">8.2.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP8_2_2" class="paragraph-anchor"></a><b>&#167;8.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Establish architectural resources</span><span class="named-paragraph-number">8.2.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -2153,11 +2153,12 @@ create a duplicate with a name like <span class="extract"><span class="extract-s
the easiest way to avoid it is to force the issue now:
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Prevent arcbitectural symbols from being doubly defined</span><span class="named-paragraph-number">8.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Prevent architectural symbols from being doubly defined</span><span class="named-paragraph-number">8.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="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">self_iname</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">symbol</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LargeScale::find_architectural_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"self"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MAX_POSITIVE_NUMBER_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MIN_NEGATIVE_NUMBER_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">NULL_HL</span><span class="plain-syntax">));</span>

View file

@ -1,4 +1,4 @@
Total memory consumption was 379108K = 370 MB
Total memory consumption was 379106K = 370 MB
66.6% was used for 2005891 objects, in 360763 frames in 316 x 800K = 252800K = 246 MB:
@ -237,7 +237,7 @@ Total memory consumption was 379108K = 370 MB
33.3% was used for memory not allocated for objects:
19.7% text stream storage 76627004 bytes in 452128 claims
19.7% text stream storage 76624528 bytes in 452128 claims
1.1% dictionary storage 4544512 bytes in 6619 claims
---- sorting 744 bytes in 3 claims
1.8% source text 7200000 bytes in 3 claims
@ -245,8 +245,8 @@ Total memory consumption was 379108K = 370 MB
---- documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
1.1% inter symbols storage 4521792 bytes in 27920 claims
4.3% inter bytecode storage 16767756 bytes in 14 claims
1.1% inter symbols storage 4522288 bytes in 27921 claims
4.3% inter bytecode storage 16767476 bytes in 14 claims
1.6% inter links storage 6222976 bytes in 11 claims
---- inter tree location list storage 191232 bytes in 32 claims
0.4% instance-of-kind counting 1695204 bytes in 1 claim

View file

@ -1,12 +1,12 @@
100.0% in inform7 run
68.1% in compilation to Inter
47.6% in //Sequence::undertake_queued_tasks//
4.5% in //MajorNodes::pre_pass//
3.3% in //MajorNodes::pass_1//
2.4% in //RTPhrasebook::compile_entries//
1.6% in //ImperativeDefinitions::assess_all//
68.6% in compilation to Inter
47.8% in //Sequence::undertake_queued_tasks//
4.6% in //MajorNodes::pre_pass//
3.2% in //MajorNodes::pass_1//
2.5% in //RTPhrasebook::compile_entries//
1.7% in //ImperativeDefinitions::assess_all//
1.5% in //RTKindConstructors::compile//
1.1% in //Sequence::lint_inter//
0.9% in //Sequence::lint_inter//
0.5% in //MajorNodes::pass_2//
0.5% in //Sequence::undertake_queued_tasks//
0.5% in //World::stage_V//
@ -16,18 +16,17 @@
0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
2.4% not specifically accounted for
29.0% in running Inter pipeline
10.1% in step 14/14: generate inform6 -> auto.inf
7.7% in step 5/14: load-binary-kits
6.7% in step 6/14: make-synoptic-module
1.5% in step 9/14: make-identifiers-unique
2.8% not specifically accounted for
28.6% in running Inter pipeline
10.2% in step 14/14: generate inform6 -> auto.inf
7.5% in step 5/14: load-binary-kits
6.3% in step 6/14: make-synoptic-module
1.3% in step 9/14: make-identifiers-unique
0.3% in step 12/14: eliminate-redundant-operations
0.3% in step 4/14: compile-splats
0.3% in step 7/14: shorten-wiring
0.3% in step 8/14: detect-indirect-calls
0.1% in step 11/14: eliminate-redundant-labels
1.2% not specifically accounted for
2.2% in supervisor
0.6% not specifically accounted for
1.3% not specifically accounted for
2.3% in supervisor
0.4% not specifically accounted for

View file

@ -166,7 +166,7 @@ void Hierarchy::establish(void) {
H_BEGIN_DECLARATIONS
@<Establish locations for material created by the compiler@>;
@<Establish locations for material expected to be added by linking@>;
@<Prevent arcbitectural symbols from being doubly defined@>;
@<Prevent architectural symbols from being doubly defined@>;
H_END_DECLARATIONS
}
@ -199,7 +199,7 @@ void Hierarchy::establish(void) {
@<The rest@>;
@<Establish locations for material expected to be added by linking@> =
@<Establish architecturak resources@>;
@<Establish architectural resources@>;
@h Basics.
@ -1950,7 +1950,7 @@ ones which the //inform7//-compiled code needs to refer to.
@e MAX_POSITIVE_NUMBER_HL
@e MIN_NEGATIVE_NUMBER_HL
@<Establish architecturak resources@> =
@<Establish architectural resources@> =
H_BEGIN(LocationRequirements::architectural_package(I))
H_C_T(SELF_HL, I"self")
H_C_T(NULL_HL, I"NULL")
@ -1963,8 +1963,9 @@ anyway, we need to make sure that a call to |Hierarchy::find| does not
create a duplicate with a name like |NULL_1|. This is a race condition, and
the easiest way to avoid it is to force the issue now:
@<Prevent arcbitectural symbols from being doubly defined@> =
InterNames::to_symbol(Hierarchy::find(SELF_HL));
@<Prevent architectural symbols from being doubly defined@> =
inter_name *self_iname = Hierarchy::find(SELF_HL);
self_iname->symbol = LargeScale::find_architectural_symbol(I, I"self");
InterNames::to_symbol(Hierarchy::find(MAX_POSITIVE_NUMBER_HL));
InterNames::to_symbol(Hierarchy::find(MIN_NEGATIVE_NUMBER_HL));
InterNames::to_symbol(Hierarchy::find(NULL_HL));

View file

@ -191,3 +191,14 @@ The "shell" function, |call|, creates a stack frame and then calls the "kernel"
function, which does the actual work; when that returns to the "shell", the
stack frame is disposed of again. This is all transparent to the user, who
simply calls |call| and doesn't need to know which mechanism is in play.
@h Looking at the Inter produced.
The following commands produce the final state of the Inter code for the test
case |Acidity|, in binary and textual form:
= (text as ConsoleText)
$ 'inform7/Tangled/inform7' -source inform7/Tests/Test\ Cases/Acidity.txt -o Acidity.interb -format=binary
$ 'inform7/Tangled/inform7' -source inform7/Tests/Test\ Cases/Acidity.txt -o Acidity.intert -format=text
=
Be warned that they are large: they have several large kits linked into them
by the time they have reached this final state, and thus contain many modules.
|Acidity.intert| runs to about 250,000 lines of textual Inter.

View file

@ -20,6 +20,7 @@ package main _plain
constant (K_number) cornelius = dw"frogs"
constant (K_number) gaius = dw"toads"
constant emptytext = ""
constant IMPROBABLE_VALUE = 0xdeadce11
splat "Sing a song of \"six splats\"...\nand don't wait up"
typename K_colour = enum
instance (K_colour) I_green = 1
@ -85,3 +86,14 @@ package main _plain
inv !return
val (/main/K_colour) /main/I_red
constant (K_number) amount = sum{ 2, C_taxes }
package glk_buffer_to_upper_case_uni _code
local _vararg_count
local ret
code
inv @glk
val 289
val _vararg_count
val ret
inv !return
val ret
constant (text) ^text = "A = B"

View file

@ -195,21 +195,21 @@ inter_symbol *LargeScale::find_architectural_symbol(inter_tree *I, text_stream *
inter_symbol *S = InterSymbolsTable::symbol_from_name(tab, N);
if (S == NULL) {
@<Ensure the on-demand dictionary exists@>;
if (Dictionaries::find(create_these_architectural_symbols_on_demand, N)) {
S = LargeScale::arch_constant_dec(I, N, InterTypes::unchecked(), 0);
}
if (Dictionaries::find(create_these_architectural_symbols_on_demand, N))
S = LargeScale::arch_constant_dec(I, N, InterTypes::unchecked(), 0);
}
return S;
}
int LargeScale::is_veneer_symbol(inter_symbol *con_name) {
if (con_name == NULL) return FALSE;
inter_tree_node *D = con_name->definition;
if (D == NULL) return FALSE;
if (Inode::get_package(D) == LargeScale::architecture_package(Inode::tree(D))) {
text_stream *N = InterSymbol::identifier(con_name);
if (Dictionaries::find(create_these_architectural_symbols_on_demand, N))
return TRUE;
if (con_name) {
inter_package *home = InterSymbol::package(con_name);
inter_tree *I = InterPackage::tree(home);
if (home == LargeScale::architecture_package(I)) {
text_stream *N = InterSymbol::identifier(con_name);
if (Dictionaries::find(create_these_architectural_symbols_on_demand, N))
return TRUE;
}
}
return FALSE;
}

View file

@ -326,7 +326,9 @@ there are three bad possibilities:
LOOP_OVER_SYMBOLS_TABLE(S, T) {
if (Wiring::is_wired(S)) {
inter_symbol *target = Wiring::cable_end(S);
if (pack == LargeScale::architecture_package(I))
inter_package *target_package = InterSymbol::package(target);
if (target_package ==
LargeScale::architecture_package(InterPackage::tree(target_package)))
@<S is wired to an architectural symbol in the origin tree@>
else if (InterSymbol::is_plug(target))
@<S is wired to a loose plug in the origin tree@>

View file

@ -256,6 +256,8 @@ void InterInstruction::specify_syntax(inter_construct *IC, text_stream *syntax)
i += 5; WRITE_TO(regexp, "(%%d+)");
} else if (Str::includes_wide_string_at(syntax, L"TOKENS", i)) {
i += 5; WRITE_TO(regexp, "(%%c+)");
} else if (Str::includes_wide_string_at(syntax, L"MINTOKENS", i)) {
i += 8; WRITE_TO(regexp, "(%%c+?)");
} else if (Str::includes_wide_string_at(syntax, L"TOKEN", i)) {
i += 4; WRITE_TO(regexp, "(%%C+)");
} else if (Str::includes_wide_string_at(syntax, L"TEXT", i)) {

View file

@ -562,7 +562,7 @@ just print that name, |K_whatever|.
=
void InterTypes::write_type(OUTPUT_STREAM, inter_type type) {
if (type.type_name) {
TextualInter::write_symbol(OUT, type.type_name);
InterSymbolsTable::write_symbol_URL(OUT, type.type_name);
} else {
InterTypes::write_type_longhand(OUT, type);
}
@ -632,6 +632,13 @@ int InterTypes::literal_is_in_range(long long int N, inter_type type) {
return TRUE;
}
int InterTypes::unsigned_literal_is_in_range(long long int N, inter_type type) {
inter_type_constructor *itc = InterTypes::constructor(type);
if ((N < 0) || (N > itc->max_value - itc->min_value)) return FALSE;
return TRUE;
}
@ This is what matters: whether we allow a value of type |A| to be used where
a value of type |B| is expected.

View file

@ -219,20 +219,17 @@ resolve forward references at the end of the parsing process -- see below.
Wiring::wire_to_name(S, name);
}
DISCARD_TEXT(leaf)
return S;
}
@ This check is not foolproof. In particular, it is fooled by forward references.
But it really doesn't need to catch every possible error; this is Inter, not Inform.
@<Check that it is defined by the correct construct@> =
inter_tree_node *D = InterSymbol::definition(S);
if (InterSymbol::defined_elsewhere(S)) return S;
if (InterSymbol::misc_but_undefined(S)) return S;
if (D == NULL) {
*E = InterErrors::quoted(I"undefined symbol", name, eloc); return NULL;
}
if ((Inode::isnt(D, construct)) &&
(InterSymbol::misc_but_undefined(S) == FALSE)) {
inter_tree_node *D = InterSymbol::definition(S);
if ((D) && (Inode::isnt(D, construct))) {
text_stream *err = Str::new();
WRITE_TO(err, "symbol has type %d not %d: ", Inode::get_construct_ID(D), construct);
InterSymbolsTable::write_symbol_URL(err, S);
@ -446,7 +443,7 @@ inter_error_message *TextualInter::parse_pair(text_stream *line, inter_error_loc
wchar_t first_char = Str::get_first_char(S);
wchar_t last_char = Str::get_last_char(S);
int is_identifier = FALSE;
if (Characters::isalpha(first_char)) {
if ((Characters::isalpha(first_char)) || (first_char == '_')) {
is_identifier = TRUE;
LOOP_THROUGH_TEXT(pos, S)
if ((Characters::isalpha(Str::get(pos)) == FALSE) &&
@ -465,6 +462,7 @@ inter_error_message *TextualInter::parse_pair(text_stream *line, inter_error_loc
break;
}
}
if ((Str::get_at(S, 0) == '#') && (Str::get_at(S, 1) == '#')) is_identifier = TRUE;
@<Parse numeric literal syntax@>;
@<Parse text literal syntax@>;
@ -510,8 +508,13 @@ or (unsigned) binary, but cannot be printed back in binary.
if (pos.index > 34) return InterErrors::quoted(I"value out of range", S, eloc);
}
N = sign*N;
if (InterTypes::literal_is_in_range(N, type_wanted) == FALSE)
return InterErrors::quoted(I"value out of range", S, eloc);
if (base == 10) {
if (InterTypes::literal_is_in_range(N, type_wanted) == FALSE)
return InterErrors::quoted(I"value out of range", S, eloc);
} else {
if (InterTypes::unsigned_literal_is_in_range(N, type_wanted) == FALSE)
return InterErrors::quoted(I"value out of range", S, eloc);
}
if (sign == -1) *pair = InterValuePairs::signed_number((int) N);
else *pair = InterValuePairs::number_in_base((inter_ti) N, base);
return NULL;
@ -637,8 +640,6 @@ one above.
}
@<Use this symb as the result@> =
if ((InterTypes::is_enumerated(type_wanted)) && (InterSymbol::is_defined(symb) == FALSE))
return InterErrors::quoted(I"undefined symbol", S, eloc);
inter_type symbol_type = InterTypes::of_symbol(symb);
inter_error_message *E = InterTypes::can_be_used_as(symbol_type, type_wanted, S, eloc);
if (E) return E;

View file

@ -124,11 +124,7 @@ inter_error_message *VerifyingInter::SID(inter_package *owner, inter_tree_node *
inter_tree_node *D = InterSymbol::definition(S);
if (InterSymbol::defined_elsewhere(S)) return NULL;
if (InterSymbol::misc_but_undefined(S)) return NULL;
if (D == NULL) return Inode::error(P, I"undefined symbol", InterSymbol::identifier(S));
if ((construct != INVALID_IST) &&
(Inode::isnt(D, construct)) &&
(InterSymbol::defined_elsewhere(S) == FALSE) &&
(InterSymbol::misc_but_undefined(S) == FALSE)) {
if ((construct != INVALID_IST) && (D) && (Inode::isnt(D, construct))) {
text_stream *err = Str::new();
WRITE_TO(err, "symbol has type %d not %d: ", Inode::get_construct_ID(D), construct);
InterSymbolsTable::write_symbol_URL(err, S);

View file

@ -9,7 +9,7 @@ For what this does and why it is used, see //inter: Textual Inter//.
void ConstantInstruction::define_construct(void) {
inter_construct *IC = InterInstruction::create_construct(CONSTANT_IST, I"constant");
InterInstruction::defines_symbol_in_fields(IC, DEFN_CONST_IFLD, TYPE_CONST_IFLD);
InterInstruction::specify_syntax(IC, I"constant TOKENS = TOKENS");
InterInstruction::specify_syntax(IC, I"constant MINTOKENS = TOKENS");
InterInstruction::data_extent_at_least(IC, 3);
InterInstruction::permit(IC, INSIDE_PLAIN_PACKAGE_ICUP);
METHOD_ADD(IC, CONSTRUCT_READ_MTID, ConstantInstruction::read);

View file

@ -114,8 +114,6 @@ void InstanceInstruction::read(inter_construct *IC, inter_bookmark *IBM, inter_l
match_results mr = Regexp::create_mr();
if (Regexp::match(&mr, type_text, L"%((%c+)%)"))
inst_type = InterTypes::parse_simple(InterBookmark::scope(IBM), eloc, mr.exp[0], E);
if (InterTypes::is_enumerated(inst_type) == FALSE)
*E = InterErrors::quoted(I"not an enumerated type", type_text, eloc);
Regexp::dispose_of(&mr);
if (*E) return;
@ -138,9 +136,9 @@ void InstanceInstruction::read(inter_construct *IC, inter_bookmark *IBM, inter_l
=
void InstanceInstruction::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_node *P) {
inter_symbol *instance_s = InstanceInstruction::instance(P);
inter_symbol *typename_s = InterSymbolsTable::symbol_from_ID_at_node(P, TYPE_INST_IFLD);
WRITE("instance (%S) %S = ",
InterSymbol::identifier(typename_s), InterSymbol::identifier(instance_s));
WRITE("instance (");
TextualInter::write_symbol_from(OUT, P, TYPE_INST_IFLD);
WRITE(") %S = ", InterSymbol::identifier(instance_s));
TextualInter::write_pair(OUT, P, InterValuePairs::get(P, VAL1_INST_IFLD));
}

View file

@ -131,12 +131,14 @@ void PermissionInstruction::read(inter_construct *IC, inter_bookmark *IBM,
=
void PermissionInstruction::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_node *P) {
inter_symbol *prop_s = PermissionInstruction::property(P);
inter_symbol *owner_s = PermissionInstruction::owner(P);
inter_symbol *storage_s = PermissionInstruction::storage(P);
WRITE("permission for %S to have %S",
InterSymbol::identifier(owner_s), InterSymbol::identifier(prop_s));
if (storage_s) WRITE(" %S", InterSymbol::identifier(storage_s));
WRITE("permission for ");
TextualInter::write_symbol_from(OUT, P, OWNER_PERM_IFLD);
WRITE(" to have ");
TextualInter::write_symbol_from(OUT, P, PROP_PERM_IFLD);
if (PermissionInstruction::storage(P)) {
WRITE(" ");
TextualInter::write_symbol_from(OUT, P, STORAGE_PERM_IFLD);
}
}
@h Access functions.

View file

@ -159,10 +159,11 @@ inter_symbol *PropertyValueInstruction::parse_owner(inter_error_location *eloc,
=
void PropertyValueInstruction::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_node *P) {
inter_symbol *prop_s = PropertyValueInstruction::property(P);
inter_symbol *owner_s = PropertyValueInstruction::owner(P);
WRITE("propertyvalue %S of %S = ",
InterSymbol::identifier(prop_s), InterSymbol::identifier(owner_s));
WRITE("propertyvalue ");
TextualInter::write_symbol_from(OUT, P, PROP_PVAL_IFLD);
WRITE(" of ");
TextualInter::write_symbol_from(OUT, P, OWNER_PVAL_IFLD);
WRITE(" = ");
TextualInter::write_pair(OUT, P, PropertyValueInstruction::value(P));
}

View file

@ -155,7 +155,8 @@ void TypenameInstruction::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_n
WRITE("typename %S ", InterSymbol::identifier(typename_s));
inter_symbol *super = TypenameInstruction::super(typename_s);
if (super) {
WRITE("<= %S", InterSymbol::identifier(super));
WRITE("<= ");
TextualInter::write_symbol_from(OUT, P, SUPER_TYPENAME_IFLD);
} else {
WRITE("= ");
InterTypes::write_typename_definition(OUT, typename_s);