1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-03 07:24:58 +03:00

Continued to extricate package names from symbols

This commit is contained in:
Graham Nelson 2019-07-27 15:01:50 +01:00
parent 1ff1d6137f
commit 9847bbc43e
46 changed files with 256 additions and 218 deletions

View file

@ -411,7 +411,6 @@ logging:
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">property_ptype_symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">to_phrase_ptype_symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">template_symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">template_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::Pipeline::prepare_to_run</span><span class="plain">(</span><span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
@ -423,8 +422,7 @@ logging:
<span class="identifier">property_ptype_symbol</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/_property"</span><span class="plain">);</span>
<span class="identifier">to_phrase_ptype_symbol</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/_to_phrase"</span><span class="plain">);</span>
<span class="identifier">template_symbol</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/main/template"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">template_symbol</span><span class="plain">) </span><span class="identifier">template_package</span><span class="plain"> = </span><span class="identifier">Inter::Package::which</span><span class="plain">(</span><span class="identifier">template_symbol</span><span class="plain">);</span>
<span class="identifier">template_package</span><span class="plain"> = </span><span class="identifier">Inter::Packages::by_url</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/main/template"</span><span class="plain">);</span>
<span class="identifier">unchecked_kind_symbol</span><span class="plain"> = </span><span class="identifier">Inter::Packages::search_resources_exhaustively</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"K_unchecked"</span><span class="plain">);</span>
<span class="identifier">unchecked_function_symbol</span><span class="plain"> = </span><span class="identifier">Inter::Packages::search_resources_exhaustively</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"K_unchecked_function"</span><span class="plain">);</span>

View file

@ -108,17 +108,15 @@ the pipeline:
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Stage::run_move_stage</span><span class="plain">(</span><span class="reserved">pipeline_step</span><span class="plain"> *</span><span class="identifier">step</span><span class="plain">) {</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Arg is %S.\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;step_argument</span><span class="plain">);</span>
<span class="identifier">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="identifier">Regexp::create_mr</span><span class="plain">();</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;step_argument</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%d):(%c+)"</span><span class="plain">)) {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">from_rep</span><span class="plain"> = </span><span class="identifier">Str::atoi</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], 0);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;pipeline</span><span class="plain">-</span><span class="element">&gt;repositories</span><span class="plain">[</span><span class="identifier">from_rep</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no such repository"</span><span class="plain">);</span>
<span class="identifier">S</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span>
<span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;pipeline</span><span class="plain">-</span><span class="element">&gt;repositories</span><span class="plain">[</span><span class="identifier">from_rep</span><span class="plain">], </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]);</span>
<span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Inter::Packages::by_url</span><span class="plain">(</span>
<span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;pipeline</span><span class="plain">-</span><span class="element">&gt;repositories</span><span class="plain">[</span><span class="identifier">from_rep</span><span class="plain">], </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]);</span>
<span class="plain">}</span>
<span class="identifier">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no such location"</span><span class="plain">);</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Inter::Package::which</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a package"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">trace_bin</span><span class="plain">) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">, </span><span class="string">"Move %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">));</span>

View file

@ -25,16 +25,11 @@
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;target_argument</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no target specified"</span><span class="plain">);</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">which</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;package_argument</span><span class="plain">) &gt; 0) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;package_argument</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">symb</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Arg %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;package_argument</span><span class="plain">);</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no such package name"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">which</span><span class="plain"> = </span><span class="identifier">Inter::Package::which</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">);</span>
<span class="identifier">which</span><span class="plain"> = </span><span class="identifier">Inter::Packages::by_url</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">,</span>
<span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;package_argument</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">which</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Arg %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;package_argument</span><span class="plain">);</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"that's not a package name"</span><span class="plain">);</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no such package name"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>

View file

@ -272,9 +272,9 @@
<p class="endnote">The function Inter::Node::fill_2 is used in 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Node::fill_3 is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Node::fill_3 is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Node::fill_4 is used in 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Node::fill_4 is used in 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Node::fill_5 is used in 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>).</p>

View file

@ -26,7 +26,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The structure inter_tree is accessed in 2/bkm, 2/st and here.</p>
<p class="endnote">The structure inter_tree is accessed in 2/bkm, 2/st, 2/pck, 3/iibf and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>

View file

@ -20,16 +20,17 @@
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_package</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">package_head</span><span class="plain">;</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">index_n</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">package_name</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">package_name_t</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">package_scope</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">package_flags</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">dictionary</span><span class="plain"> *</span><span class="identifier">name_lookup</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">inter_package</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The structure inter_package is accessed in 2/it, 3/iibf, 4/tpc3, 4/tcc2 and here.</p>
<p class="endnote">The structure inter_package is accessed in 2/it, 2/st, 3/iibf, 4/tpc3, 4/tcc2 and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
@ -51,9 +52,10 @@
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain">);</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_scope</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_flags</span><span class="plain"> = 0;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name_t</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;index_n</span><span class="plain"> = </span><span class="identifier">n</span><span class="plain">;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;name_lookup</span><span class="plain"> = </span><span class="identifier">Dictionaries::new</span><span class="plain">(</span><span class="constant">INITIAL_INTER_SYMBOLS_ID_RANGE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">pack</span><span class="plain">;</span>
<span class="plain">}</span>
@ -70,7 +72,7 @@
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::name</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name_t</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Inter::Packages::is_codelike</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain">) {</span>
@ -129,12 +131,20 @@
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain">) </span><span class="identifier">T</span><span class="plain">-</span><span class="element">&gt;owning_package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Packages::set_name</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Packages::set_name</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">Q</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Q</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no parent supplied"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"null package"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"null package name"</span><span class="plain">);</span>
<span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain"> = </span><span class="identifier">N</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">N</span><span class="plain">) &amp;&amp; (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"main"</span><span class="plain">)))</span>
<span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_name_t</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">N</span><span class="plain">) &amp;&amp; (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_name_t</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"main"</span><span class="plain">)))</span>
<span class="functiontext">Inter::Tree::set_main_package</span><span class="plain">(</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">) &gt; 0) {</span>
<span class="identifier">dict_entry</span><span class="plain"> *</span><span class="identifier">de</span><span class="plain"> = </span><span class="identifier">Dictionaries::find</span><span class="plain">(</span><span class="identifier">Q</span><span class="plain">-</span><span class="element">&gt;name_lookup</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">de</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"duplicated package name"</span><span class="plain">);</span>
<span class="identifier">Dictionaries::create</span><span class="plain">(</span><span class="identifier">Q</span><span class="plain">-</span><span class="element">&gt;name_lookup</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
<span class="identifier">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">Q</span><span class="plain">-</span><span class="element">&gt;name_lookup</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">P</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Packages::log</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">vp</span><span class="plain">) {</span>
@ -143,21 +153,15 @@
<span class="plain">}</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::basics</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::search_main_exhaustively</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"basics"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Package::which</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Packages::by_url</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/main/generic/basics"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::veneer</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::search_main_exhaustively</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"veneer"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Package::which</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Packages::by_url</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/main/veneer"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::template</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::search_main_exhaustively</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Package::which</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Packages::by_url</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/main/template"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::search_exhaustively</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
@ -267,10 +271,30 @@
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::by_name</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">at</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">next_sym</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="identifier">at</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">next_sym</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Package::which</span><span class="plain">(</span><span class="identifier">next_sym</span><span class="plain">);</span>
<span class="identifier">dict_entry</span><span class="plain"> *</span><span class="identifier">de</span><span class="plain"> = </span><span class="identifier">Dictionaries::find</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;name_lookup</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">de</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> (</span><span class="reserved">inter_package</span><span class="plain"> *) </span><span class="identifier">Dictionaries::read_value</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;name_lookup</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::by_url</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::get_first_char</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">) == </span><span class="character">'/'</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">at_P</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_package</span><span class="plain">;</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">) {</span>
<span class="identifier">wchar_t</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'/'</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">) &gt; 0) {</span>
<span class="identifier">at_P</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::by_name</span><span class="plain">(</span><span class="identifier">at_P</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">at_P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">Str::clear</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">c</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Packages::by_name</span><span class="plain">(</span><span class="identifier">at_P</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Packages::by_name</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_package</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
@ -282,7 +306,7 @@
<p class="endnote">The function Inter::Packages::tree is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP10">&#167;10</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3">&#167;1.1.3</a>, <a href="3-iibf.html#SP1_1_4">&#167;1.1.4</a>).</p>
<p class="endnote">The function Inter::Packages::name is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::name is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::is_codelike is used in 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3_3">&#167;1.1.3.3</a>).</p>
@ -322,7 +346,7 @@
<p class="endnote">The function Inter::Packages::container is used in 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::scope is used in 2/it (<a href="2-it.html#SP2">&#167;2</a>), 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP4">&#167;4</a>, <a href="2-st.html#SP7">&#167;7</a>, <a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>, <a href="2-st.html#SP10">&#167;10</a>, <a href="2-st.html#SP11">&#167;11</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">&#167;1.4.3</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::scope is used in 2/it (<a href="2-it.html#SP2">&#167;2</a>), 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP4">&#167;4</a>, <a href="2-st.html#SP7">&#167;7</a>, <a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>, <a href="2-st.html#SP10">&#167;10</a>, <a href="2-st.html#SP11">&#167;11</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::scope_of is used in 2/st (<a href="2-st.html#SP7">&#167;7</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
@ -342,6 +366,8 @@
<p class="endnote">The function Inter::Packages::by_name is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::by_url appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="2-st.html">Back to 'Symbols Tables'</a></li><li><a href="2-sym.html">Continue with 'Symbols'</a></li></ul><hr class="tocbar">
<!--End of weave-->

View file

@ -269,7 +269,7 @@ to access this: one following equations, the other not.
<p class="endnote">The function Inter::SymbolsTables::unequated_symbol_from_id is used in 3/vi (<a href="3-vi.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">&#167;7</a>, 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">&#167;1.4.3</a>, <a href="3-iibf.html#SP1_5">&#167;1.5</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 3/idt (<a href="3-idt.html#SP2">&#167;2</a>, <a href="3-idt.html#SP3">&#167;3</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">&#167;7</a>, 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 3/iibf (<a href="3-iibf.html#SP1_5">&#167;1.5</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 3/idt (<a href="3-idt.html#SP2">&#167;2</a>, <a href="3-idt.html#SP3">&#167;3</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b>It's convenient to have some abbreviations for common ways to access the above.
</p>
@ -300,7 +300,7 @@ to access this: one following equations, the other not.
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_frame_data is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_frame_data is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::global_symbol_from_frame_data is used in 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
@ -410,7 +410,7 @@ a global symbol in any non-global context.
<p class="endnote">The function Inter::SymbolsTables::id_from_symbol_F is used in 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::id_from_IRS_and_symbol is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::id_from_IRS_and_symbol is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Equations. </b></p>
@ -452,8 +452,10 @@ a global symbol in any non-global context.
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::SymbolsTables::rfr_visitor</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">state</span><span class="plain">) {</span>
<span class="reserved">inter_error_location</span><span class="plain"> *</span><span class="identifier">eloc</span><span class="plain"> = (</span><span class="reserved">inter_error_location</span><span class="plain"> *) </span><span class="identifier">state</span><span class="plain">;</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Package::defined_by_frame</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no package defined here"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Packages::is_linklike</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"package with no symbols"</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">T</span><span class="plain">-</span><span class="element">&gt;size</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="identifier">T</span><span class="plain">-</span><span class="element">&gt;symbol_array</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">symb</span><span class="plain">) &amp;&amp; (</span><span class="identifier">symb</span><span class="plain">-</span><span class="element">&gt;equated_name</span><span class="plain">)) {</span>

View file

@ -32,7 +32,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The structure inter_symbol is accessed in 2/st, 2/pck, 3/iibf, 3/iitf, 3/vi, 3/idt, 4/tmc, 4/tpc, 4/tac, 4/tpc2, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic, 4/tpc4, 4/tpc5, 4/tpc6, 4/tpc7, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tlc3, 5/tcc2 and here.</p>
<p class="endnote">The structure inter_symbol is accessed in 2/st, 3/iibf, 3/iitf, 3/vi, 3/idt, 4/tmc, 4/tpc, 4/tac, 4/tpc2, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic, 4/tpc4, 4/tpc5, 4/tpc6, 4/tpc7, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tlc3, 5/tcc2 and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>

View file

@ -321,7 +321,7 @@
<p class="endnote">The function Inter::Warehouse::retrieve_origin is used in 2/in (<a href="2-in.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Inter::Warehouse::get_symbols_table is used in 2/it (<a href="2-it.html#SP2">&#167;2</a>), 2/in (<a href="2-in.html#SP3">&#167;3</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">&#167;1.4.3</a>, <a href="3-iibf.html#SP1_5">&#167;1.5</a>).</p>
<p class="endnote">The function Inter::Warehouse::get_symbols_table is used in 2/it (<a href="2-it.html#SP2">&#167;2</a>), 2/in (<a href="2-in.html#SP3">&#167;3</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">&#167;1.4.3</a>, <a href="3-iibf.html#SP1_5">&#167;1.5</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Warehouse::create_symbols_table is used in 2/it (<a href="2-it.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>).</p>

View file

@ -255,7 +255,7 @@
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">latest_block_symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">latest_block_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Defn::read_construct_text</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">line</span><span class="plain">, </span><span class="reserved">inter_error_location</span><span class="plain"> *</span><span class="identifier">eloc</span><span class="plain">, </span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">) {</span>
<span class="reserved">inter_line_parse</span><span class="plain"> </span><span class="identifier">ilp</span><span class="plain">;</span>
@ -292,7 +292,7 @@
<span class="identifier">Str::trim_white_space</span><span class="plain">(</span><span class="identifier">ilp</span><span class="element">.line</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ilp</span><span class="element">.indent_level</span><span class="plain"> == 0) </span><span class="identifier">latest_block_symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ilp</span><span class="element">.indent_level</span><span class="plain"> == 0) </span><span class="identifier">latest_block_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">while</span><span class="plain"> ((</span><span class="functiontext">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">)) &amp;&amp; (</span><span class="functiontext">Inter::Packages::is_rootlike</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">) &amp;&amp; (</span><span class="identifier">ilp</span><span class="element">.indent_level</span><span class="plain"> &lt;= </span><span class="functiontext">Inter::Bookmarks::baseline</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">))) {</span>
<span class="functiontext">Inter::Bookmarks::set_current_package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="functiontext">Inter::Packages::parent</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">)));</span>
@ -316,12 +316,12 @@
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"bad inter line"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Defn::set_latest_package_symbol</span><span class="plain">(</span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">) {</span>
<span class="identifier">latest_block_symbol</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Defn::set_latest_block_package</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">) {</span>
<span class="identifier">latest_block_package</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">latest_block_symbol</span><span class="plain">;</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">latest_block_package</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">cons</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">level</span><span class="plain">, </span><span class="reserved">inter_error_location</span><span class="plain"> *</span><span class="identifier">eloc</span><span class="plain">) {</span>
@ -388,9 +388,9 @@
<p class="endnote">The function Inter::Defn::read_construct_text is used in 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Defn::set_latest_package_symbol is used in 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::set_latest_block_package is used in 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::get_latest_block_symbol is used in 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::get_latest_block_package is used in 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::vet_level is used in 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>

View file

@ -451,8 +451,6 @@ that's the end of the list and therefore the block. (There is no resource 0.)
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &amp;</span><span class="identifier">rl</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&amp;</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">sc</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &amp;</span><span class="identifier">sc</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&amp;</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">nid</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &amp;</span><span class="identifier">nid</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&amp;</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">parent</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">p</span><span class="plain"> != 0) </span><span class="identifier">parent</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::get_package</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">p</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">res</span><span class="plain">-</span><span class="element">&gt;stored_package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
@ -464,13 +462,16 @@ that's the end of the list and therefore the block. (There is no resource 0.)
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">grid</span><span class="plain">) </span><span class="identifier">sc</span><span class="plain"> = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">sc</span><span class="plain">];</span>
<span class="functiontext">Inter::Packages::set_scope</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">&gt;stored_package</span><span class="plain">, </span><span class="functiontext">Inter::Warehouse::get_symbols_table</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">sc</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nid</span><span class="plain"> != 0) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">pack_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="identifier">parent</span><span class="plain">?(</span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">parent</span><span class="plain">)):</span><span class="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">nid</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack_name</span><span class="plain">)</span>
<span class="functiontext">Inter::Packages::set_name</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">&gt;stored_package</span><span class="plain">, </span><span class="identifier">pack_name</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&amp;</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"unable to retrieve package name"</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &amp;</span><span class="identifier">L</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&amp;</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &amp;</span><span class="identifier">c</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&amp;</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">, (</span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">c</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="functiontext">Inter::Packages::set_name</span><span class="plain">((</span><span class="identifier">parent</span><span class="plain">)?(</span><span class="identifier">parent</span><span class="plain">):(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_package</span><span class="plain">), </span><span class="identifier">res</span><span class="plain">-</span><span class="element">&gt;stored_package</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
</pre>
<p class="inwebparagraph"></p>
@ -491,10 +492,9 @@ that's the end of the list and therefore the block. (There is no resource 0.)
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="functiontext">Inter::Packages::is_codelike</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">));</span>
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="functiontext">Inter::Packages::is_rootlike</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">));</span>
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_scope</span><span class="plain">-</span><span class="element">&gt;n_index</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">)</span>
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">-</span><span class="element">&gt;symbol_ID</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, 0);</span>
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_name_t</span><span class="plain">));</span>
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_name_t</span><span class="plain">)</span>
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">));</span>
<span class="plain">}</span>
</pre>

View file

@ -145,7 +145,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Verify::defn is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::defn is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::local_defn is used in 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>).</p>

View file

@ -41,10 +41,9 @@
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">DEFN_PACKAGE_IFLD</span><span class="plain"> 2</span>
<span class="definitionkeyword">define</span> <span class="constant">PTYPE_PACKAGE_IFLD</span><span class="plain"> 3</span>
<span class="definitionkeyword">define</span> <span class="constant">SYMBOLS_PACKAGE_IFLD</span><span class="plain"> 4</span>
<span class="definitionkeyword">define</span> <span class="constant">PID_PACKAGE_IFLD</span><span class="plain"> 5</span>
<span class="definitionkeyword">define</span> <span class="constant">PTYPE_PACKAGE_IFLD</span><span class="plain"> 2</span>
<span class="definitionkeyword">define</span> <span class="constant">SYMBOLS_PACKAGE_IFLD</span><span class="plain"> 3</span>
<span class="definitionkeyword">define</span> <span class="constant">PID_PACKAGE_IFLD</span><span class="plain"> 4</span>
</pre>
<pre class="display">
@ -64,30 +63,35 @@
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Package::new_package_named</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">uniquely</span><span class="plain">,</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">level</span><span class="plain">, </span><span class="reserved">inter_error_location</span><span class="plain"> *</span><span class="identifier">eloc</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> **</span><span class="identifier">created</span><span class="plain">) {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">, </span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">package_name</span><span class="plain"> =</span>
<span class="plain">(</span><span class="identifier">uniquely</span><span class="plain">) ? (</span><span class="functiontext">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">name</span><span class="plain">))</span>
<span class="plain">: (</span><span class="functiontext">Inter::SymbolsTables::symbol_from_name_creating</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">name</span><span class="plain">));</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Package::new_package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">package_name</span><span class="plain">, </span><span class="identifier">ptype_name</span><span class="plain">, </span><span class="identifier">level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">created</span><span class="plain">);</span>
<span class="plain">(</span><span class="identifier">uniquely</span><span class="plain">) ? (</span><span class="functiontext">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">A</span><span class="plain">))</span>
<span class="plain">: (</span><span class="functiontext">Inter::SymbolsTables::symbol_from_name_creating</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">A</span><span class="plain">));</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Package::new_package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">package_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">ptype_name</span><span class="plain">, </span><span class="identifier">level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">created</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Package::new_package</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">package_name</span><span class="plain">, </span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">level</span><span class="plain">, </span><span class="reserved">inter_error_location</span><span class="plain"> *</span><span class="identifier">eloc</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> **</span><span class="identifier">created</span><span class="plain">) {</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Package::new_package</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name_text</span><span class="plain">, </span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">level</span><span class="plain">, </span><span class="reserved">inter_error_location</span><span class="plain"> *</span><span class="identifier">eloc</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> **</span><span class="identifier">created</span><span class="plain">) {</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">STID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_symbols_table</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
<span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Node::fill_4</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">,</span>
<span class="constant">PACKAGE_IST</span><span class="plain">, </span><span class="functiontext">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">package_name</span><span class="plain">), </span><span class="functiontext">Inter::SymbolsTables::id_from_symbol</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">ptype_name</span><span class="plain">), </span><span class="identifier">STID</span><span class="plain">, 0, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</span><span class="plain">);</span>
<span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Node::fill_3</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">,</span>
<span class="constant">PACKAGE_IST</span><span class="plain">,</span>
<span class="functiontext">Inter::SymbolsTables::id_from_symbol</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">ptype_name</span><span class="plain">), </span><span class="identifier">STID</span><span class="plain">, 0, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</span><span class="plain">);</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">PID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_package</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::get_package</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">PID</span><span class="plain">);</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">PID_PACKAGE_IFLD</span><span class="plain">] = </span><span class="identifier">PID</span><span class="plain">;</span>
<span class="functiontext">Inter::Packages::set_scope</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="functiontext">Inter::Warehouse::get_symbols_table</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">STID</span><span class="plain">));</span>
<span class="functiontext">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">STID</span><span class="plain">, </span><span class="identifier">pack</span><span class="plain">);</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::verify_construct</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
<span class="functiontext">Inter::Bookmarks::insert</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">PID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_package</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::get_package</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">PID</span><span class="plain">);</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="functiontext">Inter::Packages::set_name</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="functiontext">Inter::Packages::set_name</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">name_text</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ptype_name</span><span class="plain"> == </span><span class="identifier">code_packagetype</span><span class="plain">) </span><span class="functiontext">Inter::Packages::make_codelike</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">linkage_packagetype</span><span class="plain">) &amp;&amp; (</span><span class="identifier">ptype_name</span><span class="plain"> == </span><span class="identifier">linkage_packagetype</span><span class="plain">))</span>
<span class="functiontext">Inter::Packages::make_linklike</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">);</span>
<span class="functiontext">Inter::Packages::set_scope</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">package_name</span><span class="plain">));</span>
<span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">PID_PACKAGE_IFLD</span><span class="plain">] = </span><span class="identifier">PID</span><span class="plain">;</span>
<span class="functiontext">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">STID</span><span class="plain">, </span><span class="identifier">pack</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">created</span><span class="plain">) *</span><span class="identifier">created</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">;</span>
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">INTER_SYMBOLS</span><span class="plain">, </span><span class="string">"Package $6 at IBM $5\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">IBM</span><span class="plain">);</span>
@ -101,31 +105,29 @@
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Package::verify</span><span class="plain">(</span><span class="reserved">inter_construct</span><span class="plain"> *</span><span class="identifier">IC</span><span class="plain">, </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain">, </span><span class="reserved">inter_error_message</span><span class="plain"> **</span><span class="identifier">E</span><span class="plain">) {</span>
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Verify::defn</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="constant">DEFN_PACKAGE_IFLD</span><span class="plain">); </span><span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Node::ID_to_package</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">PID_PACKAGE_IFLD</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain">) </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"uh?"</span><span class="plain">);</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">T</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">T</span><span class="plain"> = </span><span class="functiontext">Inter::Node::globals</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">package_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">DEFN_PACKAGE_IFLD</span><span class="plain">]);</span>
<span class="functiontext">Inter::Defn::set_latest_package_symbol</span><span class="plain">(</span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="functiontext">Inter::Defn::set_latest_block_package</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Package::write</span><span class="plain">(</span><span class="reserved">inter_construct</span><span class="plain"> *</span><span class="identifier">IC</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">inter_error_message</span><span class="plain"> **</span><span class="identifier">E</span><span class="plain">) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">package_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="constant">DEFN_PACKAGE_IFLD</span><span class="plain">);</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Package::defined_by_frame</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::global_symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="constant">PTYPE_PACKAGE_IFLD</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">package_name</span><span class="plain">) &amp;&amp; (</span><span class="identifier">ptype_name</span><span class="plain">)) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"package %S %S"</span><span class="plain">, </span><span class="identifier">package_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">ptype_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">pack</span><span class="plain">) &amp;&amp; (</span><span class="identifier">ptype_name</span><span class="plain">)) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"package %S %S"</span><span class="plain">, </span><span class="functiontext">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">), </span><span class="identifier">ptype_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">package_name</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"package can't be written - no name"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"package can't be written - no name"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"package can't be written - no type"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Package::write_symbols</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">package_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="constant">DEFN_PACKAGE_IFLD</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">package_name</span><span class="plain">) {</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Package::defined_by_frame</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain">) {</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">);</span>
<span class="functiontext">Inter::SymbolsTables::write_declarations</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">locals</span><span class="plain">, (</span><span class="reserved">int</span><span class="plain">) (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">LEVEL_IFLD</span><span class="plain">] + 1));</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
@ -198,13 +200,13 @@
<p class="endnote">The function Inter::Package::is appears nowhere else.</p>
<p class="endnote">The function Inter::Package::which is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Package::which appears nowhere else.</p>
<p class="endnote">The function Inter::Package::defined_by_frame is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP10">&#167;10</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Package::type is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Package::local_symbols is used in 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Package::local_symbols appears nowhere else.</p>
<p class="endnote">The function Inter::Package::verify_children is used in <a href="#SP1">&#167;1</a>.</p>

View file

@ -36,7 +36,7 @@
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Annotations::exist</span><span class="plain">(&amp;(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;set</span><span class="plain">))) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"__annotations are not allowed"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">symbol_name</span><span class="plain"> = </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[2];</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">trans_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
@ -58,7 +58,7 @@
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">name_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">level</span><span class="plain"> = 0;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain">) {</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">locals</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"function has no symbols table"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="identifier">name_name</span><span class="plain"> = </span><span class="functiontext">Inter::Textual::new_symbol</span><span class="plain">(</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">locals</span><span class="plain">, </span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">E</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>

View file

@ -53,7 +53,7 @@
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">CODE_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'code' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Code::new</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>

View file

@ -55,7 +55,7 @@
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">CAST_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'val' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">from_kind</span><span class="plain"> = </span><span class="functiontext">Inter::Textual::find_symbol</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">eloc</span><span class="plain">, </span><span class="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1], </span><span class="constant">KIND_IST</span><span class="plain">, </span><span class="identifier">E</span><span class="plain">);</span>

View file

@ -53,7 +53,7 @@
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">EVALUATION_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'evaluation' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Evaluation::new</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>

View file

@ -57,7 +57,7 @@
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">INV_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'inv' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">invoked_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">)), </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>

View file

@ -51,9 +51,9 @@
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Annotations::exist</span><span class="plain">(&amp;(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;set</span><span class="plain">))) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"__annotations are not allowed"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">LABEL_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'label' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">locals</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"function has no symbols table"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="identifier">locals</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>

View file

@ -51,9 +51,9 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Local::read</span><span class="plain">(</span><span class="reserved">inter_construct</span><span class="plain"> *</span><span class="identifier">IC</span><span class="plain">, </span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="reserved">inter_line_parse</span><span class="plain"> *</span><span class="identifier">ilp</span><span class="plain">, </span><span class="reserved">inter_error_location</span><span class="plain"> *</span><span class="identifier">eloc</span><span class="plain">, </span><span class="reserved">inter_error_message</span><span class="plain"> **</span><span class="identifier">E</span><span class="plain">) {</span>
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">LOCAL_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'local' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">locals</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"function has no symbols table"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">var_name</span><span class="plain"> = </span><span class="functiontext">Inter::Textual::find_undefined_symbol</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">locals</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], </span><span class="identifier">E</span><span class="plain">);</span>

View file

@ -53,9 +53,9 @@
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">LAB_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'lab' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">locals</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"function has no symbols table"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">label</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="identifier">locals</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>

View file

@ -55,9 +55,9 @@
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">REF_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'ref' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">locals</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"function has no symbols table"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">ref_kind</span><span class="plain"> = </span><span class="functiontext">Inter::Textual::find_symbol</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">eloc</span><span class="plain">, </span><span class="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], </span><span class="constant">KIND_IST</span><span class="plain">, </span><span class="identifier">E</span><span class="plain">);</span>

View file

@ -53,7 +53,7 @@
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">REFERENCE_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'reference' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Reference::new</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>

View file

@ -71,9 +71,9 @@
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">SPLAT_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain"> &gt; 0) {</span>
<span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"indented 'splat' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">}</span>

View file

@ -55,9 +55,9 @@
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">VAL_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_symbol</span><span class="plain">();</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::get_latest_block_package</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">routine</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"'val' used outside function"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">locals</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">locals</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"function has no symbols table"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">val_kind</span><span class="plain"> = </span><span class="functiontext">Inter::Textual::find_symbol</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">eloc</span><span class="plain">, </span><span class="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], </span><span class="constant">KIND_IST</span><span class="plain">, </span><span class="identifier">E</span><span class="plain">);</span>

View file

@ -7,8 +7,6 @@ packagetype _command
packagetype _action
package main _plain
symbol public misc other
symbol public misc template
package other _module
symbol public misc K_unchecked
symbol public misc K_unchecked_function

View file

@ -351,7 +351,6 @@ inter_symbol *command_ptype_symbol = NULL;
inter_symbol *property_ptype_symbol = NULL;
inter_symbol *to_phrase_ptype_symbol = NULL;
inter_symbol *template_symbol = NULL;
inter_package *template_package = NULL;
void CodeGen::Pipeline::prepare_to_run(inter_tree *I) {
@ -363,8 +362,7 @@ void CodeGen::Pipeline::prepare_to_run(inter_tree *I) {
property_ptype_symbol = Inter::SymbolsTables::url_name_to_symbol(I, NULL, I"/_property");
to_phrase_ptype_symbol = Inter::SymbolsTables::url_name_to_symbol(I, NULL, I"/_to_phrase");
template_symbol = Inter::SymbolsTables::url_name_to_symbol(I, NULL, I"/main/template");
if (template_symbol) template_package = Inter::Package::which(template_symbol);
template_package = Inter::Packages::by_url(I, I"/main/template");
unchecked_kind_symbol = Inter::Packages::search_resources_exhaustively(I, I"K_unchecked");
unchecked_function_symbol = Inter::Packages::search_resources_exhaustively(I, I"K_unchecked_function");

View file

@ -79,17 +79,15 @@ int CodeGen::Stage::run_read_stage(pipeline_step *step) {
int CodeGen::Stage::run_move_stage(pipeline_step *step) {
LOG("Arg is %S.\n", step->step_argument);
match_results mr = Regexp::create_mr();
inter_symbol *S = NULL;
inter_package *pack = NULL;
if (Regexp::match(&mr, step->step_argument, L"(%d):(%c+)")) {
int from_rep = Str::atoi(mr.exp[0], 0);
if (step->pipeline->repositories[from_rep] == NULL)
internal_error("no such repository");
S = Inter::SymbolsTables::url_name_to_symbol(
step->pipeline->repositories[from_rep], NULL, mr.exp[1]);
pack = Inter::Packages::by_url(
step->pipeline->repositories[from_rep], mr.exp[1]);
}
Regexp::dispose_of(&mr);
if (S == NULL) internal_error("no such location");
inter_package *pack = Inter::Package::which(S);
if (pack == NULL) internal_error("not a package");
if (trace_bin) WRITE_TO(STDOUT, "Move %S\n", Inter::Packages::name(pack));

View file

@ -13,16 +13,11 @@ int CodeGen::run_pipeline_stage(pipeline_step *step) {
if (step->target_argument == NULL) internal_error("no target specified");
inter_package *which = NULL;
if (Str::len(step->package_argument) > 0) {
inter_symbol *symb = Inter::SymbolsTables::url_name_to_symbol(step->repository,
NULL, step->package_argument);
if (symb == NULL) {
LOG("Arg %S\n", step->package_argument);
internal_error("no such package name");
}
which = Inter::Package::which(symb);
which = Inter::Packages::by_url(step->repository,
step->package_argument);
if (which == NULL) {
LOG("Arg %S\n", step->package_argument);
internal_error("that's not a package name");
internal_error("no such package name");
}
}

View file

@ -8,9 +8,10 @@ To manage packages of inter code.
typedef struct inter_package {
struct inter_tree_node *package_head;
inter_t index_n;
struct inter_symbol *package_name;
struct text_stream *package_name_t;
struct inter_symbols_table *package_scope;
int package_flags;
struct dictionary *name_lookup;
MEMORY_MANAGEMENT
} inter_package;
@ -29,9 +30,10 @@ inter_package *Inter::Packages::new(inter_tree *I, inter_t n) {
inter_package *pack = CREATE(inter_package);
pack->package_head = NULL;
pack->package_scope = NULL;
pack->package_name = NULL;
pack->package_flags = 0;
pack->package_name_t = NULL;
pack->index_n = n;
pack->name_lookup = Dictionaries::new(INITIAL_INTER_SYMBOLS_ID_RANGE, FALSE);
return pack;
}
@ -48,7 +50,7 @@ inter_tree *Inter::Packages::tree(inter_package *pack) {
text_stream *Inter::Packages::name(inter_package *pack) {
if (pack == NULL) return NULL;
return pack->package_name->symbol_name;
return pack->package_name_t;
}
int Inter::Packages::is_codelike(inter_package *pack) {
@ -107,12 +109,20 @@ void Inter::Packages::set_scope(inter_package *P, inter_symbols_table *T) {
if (T) T->owning_package = P;
}
void Inter::Packages::set_name(inter_package *P, inter_symbol *N) {
void Inter::Packages::set_name(inter_package *Q, inter_package *P, text_stream *N) {
if (Q == NULL) internal_error("no parent supplied");
if (P == NULL) internal_error("null package");
if (N == NULL) internal_error("null package name");
P->package_name = N;
if ((N) && (Str::eq(N->symbol_name, I"main")))
P->package_name_t = Str::duplicate(N);
if ((N) && (Str::eq(P->package_name_t, I"main")))
Inter::Tree::set_main_package(Inter::Packages::tree(P), P);
if (Str::len(N) > 0) {
dict_entry *de = Dictionaries::find(Q->name_lookup, N);
if (de) internal_error("duplicated package name");
Dictionaries::create(Q->name_lookup, N);
Dictionaries::write_value(Q->name_lookup, N, (void *) P);
}
}
void Inter::Packages::log(OUTPUT_STREAM, void *vp) {
@ -121,21 +131,15 @@ void Inter::Packages::log(OUTPUT_STREAM, void *vp) {
}
inter_package *Inter::Packages::basics(inter_tree *I) {
inter_symbol *S = Inter::Packages::search_main_exhaustively(I, I"basics");
if (S) return Inter::Package::which(S);
return NULL;
return Inter::Packages::by_url(I, I"/main/generic/basics");
}
inter_package *Inter::Packages::veneer(inter_tree *I) {
inter_symbol *S = Inter::Packages::search_main_exhaustively(I, I"veneer");
if (S) return Inter::Package::which(S);
return NULL;
return Inter::Packages::by_url(I, I"/main/veneer");
}
inter_package *Inter::Packages::template(inter_tree *I) {
inter_symbol *S = Inter::Packages::search_main_exhaustively(I, I"template");
if (S) return Inter::Package::which(S);
return NULL;
return Inter::Packages::by_url(I, I"/main/template");
}
inter_symbol *Inter::Packages::search_exhaustively(inter_package *P, text_stream *S) {
@ -245,8 +249,28 @@ void Inter::Packages::clear_flag(inter_package *P, int f) {
inter_package *Inter::Packages::by_name(inter_package *P, text_stream *name) {
if (P == NULL) return NULL;
inter_symbols_table *at = Inter::Packages::scope(P);
inter_symbol *next_sym = Inter::SymbolsTables::symbol_from_name(at, name);
if (next_sym == NULL) return NULL;
return Inter::Package::which(next_sym);
dict_entry *de = Dictionaries::find(P->name_lookup, name);
if (de) return (inter_package *) Dictionaries::read_value(P->name_lookup, name);
return NULL;
}
inter_package *Inter::Packages::by_url(inter_tree *I, text_stream *S) {
if (Str::get_first_char(S) == '/') {
inter_package *at_P = I->root_package;
TEMPORARY_TEXT(C);
LOOP_THROUGH_TEXT(P, S) {
wchar_t c = Str::get(P);
if (c == '/') {
if (Str::len(C) > 0) {
at_P = Inter::Packages::by_name(at_P, C);
if (at_P == NULL) return NULL;
}
Str::clear(C);
} else {
PUT_TO(C, c);
}
}
return Inter::Packages::by_name(at_P, C);
}
return Inter::Packages::by_name(I->root_package, S);
}

View file

@ -337,8 +337,10 @@ void Inter::SymbolsTables::resolve_forward_references(inter_tree *I, inter_error
void Inter::SymbolsTables::rfr_visitor(inter_tree *I, inter_tree_node *P, void *state) {
inter_error_location *eloc = (inter_error_location *) state;
inter_package *pack = Inter::Package::defined_by_frame(P);
if (pack == NULL) internal_error("no package defined here");
if (Inter::Packages::is_linklike(pack)) return;
inter_symbols_table *T = Inter::Packages::scope(pack);
if (T == NULL) internal_error("package with no symbols");
for (int i=0; i<T->size; i++) {
inter_symbol *symb = T->symbol_array[i];
if ((symb) && (symb->equated_name)) {

View file

@ -214,7 +214,7 @@ inter_error_message *Inter::Defn::write_construct_text_allowing_nop(OUTPUT_STREA
return E;
}
inter_symbol *latest_block_symbol = NULL;
inter_package *latest_block_package = NULL;
inter_error_message *Inter::Defn::read_construct_text(text_stream *line, inter_error_location *eloc, inter_bookmark *IBM) {
inter_line_parse ilp;
@ -251,7 +251,7 @@ inter_error_message *Inter::Defn::read_construct_text(text_stream *line, inter_e
Str::trim_white_space(ilp.line);
if (ilp.indent_level == 0) latest_block_symbol = NULL;
if (ilp.indent_level == 0) latest_block_package = NULL;
while ((Inter::Bookmarks::package(IBM)) && (Inter::Packages::is_rootlike(Inter::Bookmarks::package(IBM)) == FALSE) && (ilp.indent_level <= Inter::Bookmarks::baseline(IBM))) {
Inter::Bookmarks::set_current_package(IBM, Inter::Packages::parent(Inter::Bookmarks::package(IBM)));
@ -275,12 +275,12 @@ inter_error_message *Inter::Defn::read_construct_text(text_stream *line, inter_e
return Inter::Errors::plain(I"bad inter line", eloc);
}
void Inter::Defn::set_latest_package_symbol(inter_symbol *F) {
latest_block_symbol = F;
void Inter::Defn::set_latest_block_package(inter_package *F) {
latest_block_package = F;
}
inter_symbol *Inter::Defn::get_latest_block_symbol(void) {
return latest_block_symbol;
inter_package *Inter::Defn::get_latest_block_package(void) {
return latest_block_package;
}
inter_error_message *Inter::Defn::vet_level(inter_bookmark *IBM, inter_t cons, int level, inter_error_location *eloc) {

View file

@ -312,8 +312,6 @@ that's the end of the list and therefore the block. (There is no resource 0.)
if (BinaryFiles::read_int32(fh, &rl) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
unsigned int sc;
if (BinaryFiles::read_int32(fh, &sc) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
unsigned int nid;
if (BinaryFiles::read_int32(fh, &nid) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
inter_package *parent = NULL;
if (p != 0) parent = Inter::Warehouse::get_package(warehouse, grid[p]);
if (res->stored_package == NULL) {
@ -325,13 +323,16 @@ that's the end of the list and therefore the block. (There is no resource 0.)
if (grid) sc = grid[sc];
Inter::Packages::set_scope(res->stored_package, Inter::Warehouse::get_symbols_table(warehouse, sc));
}
if (nid != 0) {
inter_symbol *pack_name = Inter::SymbolsTables::symbol_from_id(parent?(Inter::Packages::scope(parent)):Inter::Tree::global_scope(I), nid);
if (pack_name)
Inter::Packages::set_name(res->stored_package, pack_name);
else
Inter::Binary::read_error(&eloc, ftell(fh), I"unable to retrieve package name");
TEMPORARY_TEXT(N);
unsigned int L;
if (BinaryFiles::read_int32(fh, &L) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
for (unsigned int i=0; i<L; i++) {
unsigned int c;
if (BinaryFiles::read_int32(fh, &c) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
PUT_TO(N, (int) c);
}
Inter::Packages::set_name((parent)?(parent):(I->root_package), res->stored_package, N);
DISCARD_TEXT(N);
@<Write a package resource@> =
inter_package *P = res->stored_package;
@ -342,10 +343,9 @@ that's the end of the list and therefore the block. (There is no resource 0.)
BinaryFiles::write_int32(fh, (unsigned int) Inter::Packages::is_codelike(P));
BinaryFiles::write_int32(fh, (unsigned int) Inter::Packages::is_rootlike(P));
BinaryFiles::write_int32(fh, (unsigned int) P->package_scope->n_index);
if (P->package_name)
BinaryFiles::write_int32(fh, (unsigned int) P->package_name->symbol_ID);
else
BinaryFiles::write_int32(fh, 0);
BinaryFiles::write_int32(fh, (unsigned int) Str::len(P->package_name_t));
LOOP_THROUGH_TEXT(C, P->package_name_t)
BinaryFiles::write_int32(fh, (unsigned int) Str::get(C));
}
@ We do nothing here, because frame lists are built new on reading. It's

View file

@ -22,10 +22,9 @@ void Inter::Package::define(void) {
@
@d DEFN_PACKAGE_IFLD 2
@d PTYPE_PACKAGE_IFLD 3
@d SYMBOLS_PACKAGE_IFLD 4
@d PID_PACKAGE_IFLD 5
@d PTYPE_PACKAGE_IFLD 2
@d SYMBOLS_PACKAGE_IFLD 3
@d PID_PACKAGE_IFLD 4
=
void Inter::Package::read(inter_construct *IC, inter_bookmark *IBM, inter_line_parse *ilp, inter_error_location *eloc, inter_error_message **E) {
@ -44,30 +43,35 @@ void Inter::Package::read(inter_construct *IC, inter_bookmark *IBM, inter_line_p
inter_error_message *Inter::Package::new_package_named(inter_bookmark *IBM, text_stream *name, int uniquely,
inter_symbol *ptype_name, inter_t level, inter_error_location *eloc, inter_package **created) {
TEMPORARY_TEXT(A);
WRITE_TO(A, "%S", name);
inter_symbol *package_name =
(uniquely) ? (Inter::SymbolsTables::create_with_unique_name(Inter::Bookmarks::scope(IBM), name))
: (Inter::SymbolsTables::symbol_from_name_creating(Inter::Bookmarks::scope(IBM), name));
return Inter::Package::new_package(IBM, package_name, ptype_name, level, eloc, created);
(uniquely) ? (Inter::SymbolsTables::create_with_unique_name(Inter::Bookmarks::scope(IBM), A))
: (Inter::SymbolsTables::symbol_from_name_creating(Inter::Bookmarks::scope(IBM), A));
DISCARD_TEXT(A);
return Inter::Package::new_package(IBM, package_name->symbol_name, ptype_name, level, eloc, created);
}
inter_error_message *Inter::Package::new_package(inter_bookmark *IBM, inter_symbol *package_name, inter_symbol *ptype_name, inter_t level, inter_error_location *eloc, inter_package **created) {
inter_error_message *Inter::Package::new_package(inter_bookmark *IBM, text_stream *name_text, inter_symbol *ptype_name, inter_t level, inter_error_location *eloc, inter_package **created) {
inter_t STID = Inter::Warehouse::create_symbols_table(Inter::Bookmarks::warehouse(IBM));
inter_tree_node *P = Inter::Node::fill_4(IBM,
PACKAGE_IST, Inter::SymbolsTables::id_from_IRS_and_symbol(IBM, package_name), Inter::SymbolsTables::id_from_symbol(Inter::Bookmarks::tree(IBM), NULL, ptype_name), STID, 0, eloc, level);
inter_tree_node *P = Inter::Node::fill_3(IBM,
PACKAGE_IST,
Inter::SymbolsTables::id_from_symbol(Inter::Bookmarks::tree(IBM), NULL, ptype_name), STID, 0, eloc, level);
inter_t PID = Inter::Warehouse::create_package(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::tree(IBM));
inter_package *pack = Inter::Warehouse::get_package(Inter::Bookmarks::warehouse(IBM), PID);
pack->package_head = P;
P->W.data[PID_PACKAGE_IFLD] = PID;
Inter::Packages::set_scope(pack, Inter::Warehouse::get_symbols_table(Inter::Bookmarks::warehouse(IBM), STID));
Inter::Warehouse::attribute_resource(Inter::Bookmarks::warehouse(IBM), STID, pack);
inter_error_message *E = Inter::Defn::verify_construct(Inter::Bookmarks::package(IBM), P);
if (E) return E;
Inter::Bookmarks::insert(IBM, P);
inter_t PID = Inter::Warehouse::create_package(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::tree(IBM));
inter_package *pack = Inter::Warehouse::get_package(Inter::Bookmarks::warehouse(IBM), PID);
pack->package_head = P;
Inter::Packages::set_name(pack, package_name);
Inter::Packages::set_name(Inter::Bookmarks::package(IBM), pack, name_text);
if (ptype_name == code_packagetype) Inter::Packages::make_codelike(pack);
if ((linkage_packagetype) && (ptype_name == linkage_packagetype))
Inter::Packages::make_linklike(pack);
Inter::Packages::set_scope(pack, Inter::Package::local_symbols(package_name));
P->W.data[PID_PACKAGE_IFLD] = PID;
Inter::Warehouse::attribute_resource(Inter::Bookmarks::warehouse(IBM), STID, pack);
if (created) *created = pack;
LOGIF(INTER_SYMBOLS, "Package $6 at IBM $5\n", pack, IBM);
@ -81,31 +85,29 @@ void Inter::Package::transpose(inter_construct *IC, inter_tree_node *P, inter_t
}
void Inter::Package::verify(inter_construct *IC, inter_tree_node *P, inter_package *owner, inter_error_message **E) {
*E = Inter::Verify::defn(owner, P, DEFN_PACKAGE_IFLD); if (*E) return;
inter_package *pack = Inter::Node::ID_to_package(P, P->W.data[PID_PACKAGE_IFLD]);
if (pack) pack->package_head = P;
else internal_error("uh?");
inter_symbols_table *T = Inter::Packages::scope(owner);
if (T == NULL) T = Inter::Node::globals(P);
inter_symbol *package_name = Inter::SymbolsTables::symbol_from_id(T, P->W.data[DEFN_PACKAGE_IFLD]);
Inter::Defn::set_latest_package_symbol(package_name);
Inter::Defn::set_latest_block_package(pack);
}
void Inter::Package::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_node *P, inter_error_message **E) {
inter_symbol *package_name = Inter::SymbolsTables::symbol_from_frame_data(P, DEFN_PACKAGE_IFLD);
inter_package *pack = Inter::Package::defined_by_frame(P);
inter_symbol *ptype_name = Inter::SymbolsTables::global_symbol_from_frame_data(P, PTYPE_PACKAGE_IFLD);
if ((package_name) && (ptype_name)) {
WRITE("package %S %S", package_name->symbol_name, ptype_name->symbol_name);
if ((pack) && (ptype_name)) {
WRITE("package %S %S", Inter::Packages::name(pack), ptype_name->symbol_name);
} else {
if (package_name == NULL) { *E = Inter::Node::error(P, I"package can't be written - no name", NULL); return; }
if (pack == NULL) { *E = Inter::Node::error(P, I"package can't be written - no name", NULL); return; }
*E = Inter::Node::error(P, I"package can't be written - no type", NULL); return;
}
}
inter_error_message *Inter::Package::write_symbols(OUTPUT_STREAM, inter_tree_node *P) {
inter_symbol *package_name = Inter::SymbolsTables::symbol_from_frame_data(P, DEFN_PACKAGE_IFLD);
if (package_name) {
inter_symbols_table *locals = Inter::Package::local_symbols(package_name);
inter_package *pack = Inter::Package::defined_by_frame(P);
if (pack) {
inter_symbols_table *locals = Inter::Packages::scope(pack);
Inter::SymbolsTables::write_declarations(OUT, locals, (int) (P->W.data[LEVEL_IFLD] + 1));
}
return NULL;

View file

@ -24,7 +24,7 @@ void Inter::Symbol::read(inter_construct *IC, inter_bookmark *IBM, inter_line_pa
if (*E) return;
if (Inter::Annotations::exist(&(ilp->set))) { *E = Inter::Errors::plain(I"__annotations are not allowed", eloc); return; }
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
text_stream *symbol_name = ilp->mr.exp[2];
text_stream *trans_name = NULL;
@ -46,7 +46,7 @@ void Inter::Symbol::read(inter_construct *IC, inter_bookmark *IBM, inter_line_pa
inter_symbol *name_name = NULL;
inter_t level = 0;
if (routine) {
inter_symbols_table *locals = Inter::Package::local_symbols(routine);
inter_symbols_table *locals = Inter::Packages::scope(routine);
if (locals == NULL) { *E = Inter::Errors::plain(I"function has no symbols table", eloc); return; }
name_name = Inter::Textual::new_symbol(eloc, locals, symbol_name, E);
if (*E) return;

View file

@ -36,7 +36,7 @@ void Inter::Cast::read(inter_construct *IC, inter_bookmark *IBM, inter_line_pars
*E = Inter::Defn::vet_level(IBM, CAST_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'val' used outside function", eloc); return; }
inter_symbol *from_kind = Inter::Textual::find_symbol(Inter::Bookmarks::tree(IBM), eloc, Inter::Bookmarks::scope(IBM), ilp->mr.exp[1], KIND_IST, E);

View file

@ -34,7 +34,7 @@ void Inter::Code::read(inter_construct *IC, inter_bookmark *IBM, inter_line_pars
*E = Inter::Defn::vet_level(IBM, CODE_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'code' used outside function", eloc); return; }
*E = Inter::Code::new(IBM, ilp->indent_level, eloc);

View file

@ -34,7 +34,7 @@ void Inter::Evaluation::read(inter_construct *IC, inter_bookmark *IBM, inter_lin
*E = Inter::Defn::vet_level(IBM, EVALUATION_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'evaluation' used outside function", eloc); return; }
*E = Inter::Evaluation::new(IBM, ilp->indent_level, eloc);

View file

@ -39,7 +39,7 @@ void Inter::Inv::read(inter_construct *IC, inter_bookmark *IBM, inter_line_parse
*E = Inter::Defn::vet_level(IBM, INV_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'inv' used outside function", eloc); return; }
inter_symbol *invoked_name = Inter::SymbolsTables::symbol_from_name(Inter::Tree::global_scope(Inter::Bookmarks::tree(IBM)), ilp->mr.exp[0]);

View file

@ -34,9 +34,9 @@ void Inter::Lab::read(inter_construct *IC, inter_bookmark *IBM, inter_line_parse
*E = Inter::Defn::vet_level(IBM, LAB_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'lab' used outside function", eloc); return; }
inter_symbols_table *locals = Inter::Package::local_symbols(routine);
inter_symbols_table *locals = Inter::Packages::scope(routine);
if (locals == NULL) { *E = Inter::Errors::plain(I"function has no symbols table", eloc); return; }
inter_symbol *label = Inter::SymbolsTables::symbol_from_name(locals, ilp->mr.exp[0]);

View file

@ -32,9 +32,9 @@ void Inter::Label::read(inter_construct *IC, inter_bookmark *IBM, inter_line_par
if (Inter::Annotations::exist(&(ilp->set))) { *E = Inter::Errors::plain(I"__annotations are not allowed", eloc); return; }
*E = Inter::Defn::vet_level(IBM, LABEL_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'label' used outside function", eloc); return; }
inter_symbols_table *locals = Inter::Package::local_symbols(routine);
inter_symbols_table *locals = Inter::Packages::scope(routine);
if (locals == NULL) { *E = Inter::Errors::plain(I"function has no symbols table", eloc); return; }
inter_symbol *lab_name = Inter::SymbolsTables::symbol_from_name(locals, ilp->mr.exp[0]);

View file

@ -32,9 +32,9 @@ void Inter::Local::define(void) {
void Inter::Local::read(inter_construct *IC, inter_bookmark *IBM, inter_line_parse *ilp, inter_error_location *eloc, inter_error_message **E) {
*E = Inter::Defn::vet_level(IBM, LOCAL_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'local' used outside function", eloc); return; }
inter_symbols_table *locals = Inter::Package::local_symbols(routine);
inter_symbols_table *locals = Inter::Packages::scope(routine);
if (locals == NULL) { *E = Inter::Errors::plain(I"function has no symbols table", eloc); return; }
inter_symbol *var_name = Inter::Textual::find_undefined_symbol(IBM, eloc, locals, ilp->mr.exp[0], E);

View file

@ -36,9 +36,9 @@ void Inter::Ref::read(inter_construct *IC, inter_bookmark *IBM, inter_line_parse
*E = Inter::Defn::vet_level(IBM, REF_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'ref' used outside function", eloc); return; }
inter_symbols_table *locals = Inter::Package::local_symbols(routine);
inter_symbols_table *locals = Inter::Packages::scope(routine);
if (locals == NULL) { *E = Inter::Errors::plain(I"function has no symbols table", eloc); return; }
inter_symbol *ref_kind = Inter::Textual::find_symbol(Inter::Bookmarks::tree(IBM), eloc, Inter::Bookmarks::scope(IBM), ilp->mr.exp[0], KIND_IST, E);

View file

@ -34,7 +34,7 @@ void Inter::Reference::read(inter_construct *IC, inter_bookmark *IBM, inter_line
*E = Inter::Defn::vet_level(IBM, REFERENCE_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'reference' used outside function", eloc); return; }
*E = Inter::Reference::new(IBM, ilp->indent_level, eloc);

View file

@ -53,9 +53,9 @@ void Inter::Splat::read(inter_construct *IC, inter_bookmark *IBM, inter_line_par
*E = Inter::Defn::vet_level(IBM, SPLAT_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = NULL;
inter_package *routine = NULL;
if (ilp->indent_level > 0) {
routine = Inter::Defn::get_latest_block_symbol();
routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"indented 'splat' used outside function", eloc); return; }
}

View file

@ -36,9 +36,9 @@ void Inter::Val::read(inter_construct *IC, inter_bookmark *IBM, inter_line_parse
*E = Inter::Defn::vet_level(IBM, VAL_IST, ilp->indent_level, eloc);
if (*E) return;
inter_symbol *routine = Inter::Defn::get_latest_block_symbol();
inter_package *routine = Inter::Defn::get_latest_block_package();
if (routine == NULL) { *E = Inter::Errors::plain(I"'val' used outside function", eloc); return; }
inter_symbols_table *locals = Inter::Package::local_symbols(routine);
inter_symbols_table *locals = Inter::Packages::scope(routine);
if (locals == NULL) { *E = Inter::Errors::plain(I"function has no symbols table", eloc); return; }
inter_symbol *val_kind = Inter::Textual::find_symbol(Inter::Bookmarks::tree(IBM), eloc, Inter::Bookmarks::scope(IBM), ilp->mr.exp[0], KIND_IST, E);