mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 16:44:21 +03:00
Continued to extricate package names from symbols
This commit is contained in:
parent
1ff1d6137f
commit
9847bbc43e
|
@ -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">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">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="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>
|
<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">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">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="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="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">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_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>
|
<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>
|
||||||
|
|
|
@ -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="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">>step_argument</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">>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">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">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>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">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>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">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">>pipeline</span><span class="plain">-</span><span class="element">>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="reserved">if</span><span class="plain"> (</span><span class="identifier">step</span><span class="plain">-</span><span class="element">>pipeline</span><span class="plain">-</span><span class="element">>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">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">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">>pipeline</span><span class="plain">-</span><span class="element">>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">step</span><span class="plain">-</span><span class="element">>pipeline</span><span class="plain">-</span><span class="element">>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="plain">}</span>
|
||||||
<span class="identifier">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
<span class="identifier">Regexp::dispose_of</span><span class="plain">(&</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">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>
|
<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>
|
||||||
|
|
|
@ -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">>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="reserved">if</span><span class="plain"> (</span><span class="identifier">step</span><span class="plain">-</span><span class="element">>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="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">>package_argument</span><span class="plain">) > 0) {</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">>package_argument</span><span class="plain">) > 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">>repository</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">>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">>package_argument</span><span class="plain">);</span>
|
<span class="identifier">step</span><span class="plain">-</span><span class="element">>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">>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="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="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">>package_argument</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">>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>
|
||||||
<span class="plain">}</span>
|
<span class="plain">}</span>
|
||||||
|
|
||||||
|
|
|
@ -272,9 +272,9 @@
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Node::fill_2 is used in 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Node::fill_2 is used in 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Node::fill_3 is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Node::fill_3 is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Node::fill_4 is used in 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Node::fill_4 is used in 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Node::fill_5 is used in 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Node::fill_5 is used in 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
<p class="inwebparagraph"></p>
|
<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>§2. </b></p>
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||||
|
|
||||||
|
|
|
@ -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">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="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="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">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">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="identifier">MEMORY_MANAGEMENT</span>
|
||||||
<span class="plain">} </span><span class="reserved">inter_package</span><span class="plain">;</span>
|
<span class="plain">} </span><span class="reserved">inter_package</span><span class="plain">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<p class="inwebparagraph"></p>
|
<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>§2. </b></p>
|
<p class="inwebparagraph"><a id="SP2"></a><b>§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="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">>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">>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">>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">>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">>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">>package_flags</span><span class="plain"> = 0;</span>
|
<span class="identifier">pack</span><span class="plain">-</span><span class="element">>package_flags</span><span class="plain"> = 0;</span>
|
||||||
|
<span class="identifier">pack</span><span class="plain">-</span><span class="element">>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">>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">>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">>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="reserved">return</span><span class="plain"> </span><span class="identifier">pack</span><span class="plain">;</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="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">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">>package_name</span><span class="plain">-</span><span class="element">>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">>package_name_t</span><span class="plain">;</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>
|
<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">>owning_package</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">T</span><span class="plain">) </span><span class="identifier">T</span><span class="plain">-</span><span class="element">>owning_package</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::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">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="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">>package_name</span><span class="plain"> = </span><span class="identifier">N</span><span class="plain">;</span>
|
<span class="identifier">P</span><span class="plain">-</span><span class="element">>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">) && (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"main"</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">Str::eq</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">>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="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">) > 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">>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">>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">>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="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>
|
<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="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_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">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="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="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_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">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="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="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_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">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="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="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>
|
<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">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">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="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">>name_lookup</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">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">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">>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">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="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="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">>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">) > 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">>root_package</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
|
||||||
<span class="plain">}</span>
|
<span class="plain">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
@ -282,7 +306,7 @@
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Packages::tree is used in 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP10">§10</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3">§1.1.3</a>, <a href="3-iibf.html#SP1_1_4">§1.1.4</a>).</p>
|
<p class="endnote">The function Inter::Packages::tree is used in 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP10">§10</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3">§1.1.3</a>, <a href="3-iibf.html#SP1_1_4">§1.1.4</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Packages::name is used in 2/st (<a href="2-st.html#SP11">§11</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Packages::name is used in 2/st (<a href="2-st.html#SP11">§11</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Packages::is_codelike is used in 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3_3">§1.1.3.3</a>).</p>
|
<p class="endnote">The function Inter::Packages::is_codelike is used in 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3_3">§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">§4</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Packages::container is used in 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Packages::scope is used in 2/it (<a href="2-it.html#SP2">§2</a>), 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP4">§4</a>, <a href="2-st.html#SP7">§7</a>, <a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP10">§10</a>, <a href="2-st.html#SP11">§11</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">§1.4.3</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Packages::scope is used in 2/it (<a href="2-it.html#SP2">§2</a>), 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP4">§4</a>, <a href="2-st.html#SP7">§7</a>, <a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP10">§10</a>, <a href="2-st.html#SP11">§11</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Packages::scope_of is used in 2/st (<a href="2-st.html#SP7">§7</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Packages::scope_of is used in 2/st (<a href="2-st.html#SP7">§7</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§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">§11</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Packages::by_name is used in 2/st (<a href="2-st.html#SP11">§11</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
|
<p class="endnote">The function Inter::Packages::by_url appears nowhere else.</p>
|
||||||
|
|
||||||
<hr class="tocbar">
|
<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">
|
<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-->
|
<!--End of weave-->
|
||||||
|
|
|
@ -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">§1</a>).</p>
|
<p class="endnote">The function Inter::SymbolsTables::unequated_symbol_from_id is used in 3/vi (<a href="3-vi.html#SP1">§1</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">§7</a>, 2/sym (<a href="2-sym.html#SP4">§4</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">§1.4.3</a>, <a href="3-iibf.html#SP1_5">§1.5</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 3/idt (<a href="3-idt.html#SP2">§2</a>, <a href="3-idt.html#SP3">§3</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">§7</a>, 2/sym (<a href="2-sym.html#SP4">§4</a>), 3/iibf (<a href="3-iibf.html#SP1_5">§1.5</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 3/idt (<a href="3-idt.html#SP2">§2</a>, <a href="3-idt.html#SP3">§3</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>It's convenient to have some abbreviations for common ways to access the above.
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>It's convenient to have some abbreviations for common ways to access the above.
|
||||||
</p>
|
</p>
|
||||||
|
@ -300,7 +300,7 @@ to access this: one following equations, the other not.
|
||||||
|
|
||||||
<p class="inwebparagraph"></p>
|
<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">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§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">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§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">§2</a>), 5/tic (<a href="5-tic.html#SP2">§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">§2</a>), 5/tic (<a href="5-tic.html#SP2">§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">§2</a>).</p>
|
<p class="endnote">The function Inter::SymbolsTables::id_from_symbol_F is used in 5/tic (<a href="5-tic.html#SP2">§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">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§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">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="inwebparagraph"><a id="SP10"></a><b>§10. Equations. </b></p>
|
<p class="inwebparagraph"><a id="SP10"></a><b>§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">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_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">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">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">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"><</span><span class="identifier">T</span><span class="plain">-</span><span class="element">>size</span><span class="plain">; </span><span class="identifier">i</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"><</span><span class="identifier">T</span><span class="plain">-</span><span class="element">>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">>symbol_array</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">>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">) && (</span><span class="identifier">symb</span><span class="plain">-</span><span class="element">>equated_name</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">symb</span><span class="plain">-</span><span class="element">>equated_name</span><span class="plain">)) {</span>
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
<p class="inwebparagraph"></p>
|
<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>§2. </b></p>
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||||
|
|
||||||
|
|
|
@ -321,7 +321,7 @@
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Warehouse::retrieve_origin is used in 2/in (<a href="2-in.html#SP6">§6</a>).</p>
|
<p class="endnote">The function Inter::Warehouse::retrieve_origin is used in 2/in (<a href="2-in.html#SP6">§6</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Warehouse::get_symbols_table is used in 2/it (<a href="2-it.html#SP2">§2</a>), 2/in (<a href="2-in.html#SP3">§3</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">§1.4.3</a>, <a href="3-iibf.html#SP1_5">§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">§2</a>), 2/in (<a href="2-in.html#SP3">§3</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">§1.4.3</a>, <a href="3-iibf.html#SP1_5">§1.5</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Warehouse::create_symbols_table is used in 2/it (<a href="2-it.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Warehouse::create_symbols_table is used in 2/it (<a href="2-it.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
|
|
|
@ -255,7 +255,7 @@
|
||||||
<span class="reserved">return</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="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_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>
|
<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="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">)) && (</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">) && (</span><span class="identifier">ilp</span><span class="element">.indent_level</span><span class="plain"> <= </span><span class="functiontext">Inter::Bookmarks::baseline</span><span class="plain">(</span><span class="identifier">IBM</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">)) && (</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">) && (</span><span class="identifier">ilp</span><span class="element">.indent_level</span><span class="plain"> <= </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>
|
<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="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="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="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_symbol</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="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">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_symbol</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="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>
|
<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">§1</a>).</p>
|
<p class="endnote">The function Inter::Defn::read_construct_text is used in 3/iitf (<a href="3-iitf.html#SP1">§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">§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">§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">§1</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§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">§1</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Defn::vet_level is used in 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Defn::vet_level is used in 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
|
|
|
@ -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">, &</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">(&</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">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">, &</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">(&</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">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">, &</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">(&</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">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">, &</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">(&</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">, &</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">(&</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">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">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">>stored_package</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">res</span><span class="plain">-</span><span class="element">>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="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">>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="functiontext">Inter::Packages::set_scope</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">>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="plain">}</span>
|
||||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nid</span><span class="plain"> != 0) {</span>
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</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">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">pack_name</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">, &</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">(&</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="functiontext">Inter::Packages::set_name</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">>stored_package</span><span class="plain">, </span><span class="identifier">pack_name</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"><</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
|
||||||
<span class="reserved">else</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="functiontext">Inter::Binary::read_error</span><span class="plain">(&</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="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">, &</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">(&</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="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">>root_package</span><span class="plain">), </span><span class="identifier">res</span><span class="plain">-</span><span class="element">>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>
|
</pre>
|
||||||
|
|
||||||
<p class="inwebparagraph"></p>
|
<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_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="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">>package_scope</span><span class="plain">-</span><span class="element">>n_index</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">>package_scope</span><span class="plain">-</span><span class="element">>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">>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">Str::len</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">>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">P</span><span class="plain">-</span><span class="element">>package_name</span><span class="plain">-</span><span class="element">>symbol_ID</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">>package_name_t</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">, (</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="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, 0);</span>
|
|
||||||
<span class="plain">}</span>
|
<span class="plain">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@
|
||||||
|
|
||||||
<p class="inwebparagraph"></p>
|
<p class="inwebparagraph"></p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Verify::defn is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Verify::defn is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Verify::local_defn is used in 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>).</p>
|
<p class="endnote">The function Inter::Verify::local_defn is used in 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>).</p>
|
||||||
|
|
||||||
|
|
|
@ -41,10 +41,9 @@
|
||||||
|
|
||||||
|
|
||||||
<pre class="definitions">
|
<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"> 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"> 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"> 4</span>
|
||||||
<span class="definitionkeyword">define</span> <span class="constant">PID_PACKAGE_IFLD</span><span class="plain"> 5</span>
|
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<pre class="display">
|
<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_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="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="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="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">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">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="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="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">>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="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="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="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_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="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">>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">>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">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="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="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="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">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">>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="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">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">) && (</span><span class="identifier">ptype_name</span><span class="plain"> == </span><span class="identifier">linkage_packagetype</span><span class="plain">))</span>
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">linkage_packagetype</span><span class="plain">) && (</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::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">>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="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>
|
<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="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="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">>W.data</span><span class="plain">[</span><span class="constant">PID_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::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">>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">>package_head</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">pack</span><span class="plain">-</span><span class="element">>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">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">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">>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_block_package</span><span class="plain">(</span><span class="identifier">pack</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="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">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">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">) && (</span><span class="identifier">ptype_name</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">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">>symbol_name</span><span class="plain">, </span><span class="identifier">ptype_name</span><span class="plain">-</span><span class="element">>symbol_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">>symbol_name</span><span class="plain">);</span>
|
||||||
<span class="plain">} </span><span class="reserved">else</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="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="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_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">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">package_name</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::Package::local_symbols</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::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">>W.data</span><span class="plain">[</span><span class="constant">LEVEL_IFLD</span><span class="plain">] + 1));</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">>W.data</span><span class="plain">[</span><span class="constant">LEVEL_IFLD</span><span class="plain">] + 1));</span>
|
||||||
<span class="plain">}</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">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::is appears nowhere else.</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Package::which is used in 2/pck (<a href="2-pck.html#SP3">§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">§1</a>), 2/st (<a href="2-st.html#SP10">§10</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
<p class="endnote">The function Inter::Package::defined_by_frame is used in 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP10">§10</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Package::type is used in 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
<p class="endnote">The function Inter::Package::type is used in 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
||||||
|
|
||||||
<p class="endnote">The function Inter::Package::local_symbols is used in 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§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">§1</a>.</p>
|
<p class="endnote">The function Inter::Package::verify_children is used in <a href="#SP1">§1</a>.</p>
|
||||||
|
|
||||||
|
|
|
@ -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="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">(&(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">if</span><span class="plain"> (</span><span class="functiontext">Inter::Annotations::exist</span><span class="plain">(&(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">>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">symbol_name</span><span class="plain"> = </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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>
|
<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="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="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">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="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="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>
|
<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>
|
||||||
|
|
|
@ -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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">CODE_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">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="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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||||
|
|
|
@ -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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">CAST_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">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">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">>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>
|
<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">>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>
|
||||||
|
|
|
@ -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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">EVALUATION_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">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="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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||||
|
|
|
@ -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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">INV_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">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">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">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</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">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>
|
||||||
|
|
|
@ -51,9 +51,9 @@
|
||||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Annotations::exist</span><span class="plain">(&(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">if</span><span class="plain"> (</span><span class="functiontext">Inter::Annotations::exist</span><span class="plain">(&(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">>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">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">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">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">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</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">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>
|
||||||
|
|
|
@ -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="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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">>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">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">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">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">>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>
|
<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">>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>
|
||||||
|
|
|
@ -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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">LAB_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">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">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">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">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</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">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>
|
||||||
|
|
|
@ -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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">REF_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">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">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">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">>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>
|
<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">>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>
|
||||||
|
|
|
@ -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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">REFERENCE_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">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="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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||||
|
|
|
@ -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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">SPLAT_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">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">>indent_level</span><span class="plain"> > 0) {</span>
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>indent_level</span><span class="plain"> > 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="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>
|
<span class="plain">}</span>
|
||||||
|
|
||||||
|
|
|
@ -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">>indent_level</span><span class="plain">, </span><span class="identifier">eloc</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">VAL_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>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">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">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">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">>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>
|
<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">>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>
|
||||||
|
|
|
@ -7,8 +7,6 @@ packagetype _command
|
||||||
packagetype _action
|
packagetype _action
|
||||||
|
|
||||||
package main _plain
|
package main _plain
|
||||||
symbol public misc other
|
|
||||||
symbol public misc template
|
|
||||||
package other _module
|
package other _module
|
||||||
symbol public misc K_unchecked
|
symbol public misc K_unchecked
|
||||||
symbol public misc K_unchecked_function
|
symbol public misc K_unchecked_function
|
||||||
|
|
|
@ -351,7 +351,6 @@ inter_symbol *command_ptype_symbol = NULL;
|
||||||
inter_symbol *property_ptype_symbol = NULL;
|
inter_symbol *property_ptype_symbol = NULL;
|
||||||
inter_symbol *to_phrase_ptype_symbol = NULL;
|
inter_symbol *to_phrase_ptype_symbol = NULL;
|
||||||
|
|
||||||
inter_symbol *template_symbol = NULL;
|
|
||||||
inter_package *template_package = NULL;
|
inter_package *template_package = NULL;
|
||||||
|
|
||||||
void CodeGen::Pipeline::prepare_to_run(inter_tree *I) {
|
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");
|
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");
|
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");
|
template_package = Inter::Packages::by_url(I, I"/main/template");
|
||||||
if (template_symbol) template_package = Inter::Package::which(template_symbol);
|
|
||||||
|
|
||||||
unchecked_kind_symbol = Inter::Packages::search_resources_exhaustively(I, I"K_unchecked");
|
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");
|
unchecked_function_symbol = Inter::Packages::search_resources_exhaustively(I, I"K_unchecked_function");
|
||||||
|
|
|
@ -79,17 +79,15 @@ int CodeGen::Stage::run_read_stage(pipeline_step *step) {
|
||||||
int CodeGen::Stage::run_move_stage(pipeline_step *step) {
|
int CodeGen::Stage::run_move_stage(pipeline_step *step) {
|
||||||
LOG("Arg is %S.\n", step->step_argument);
|
LOG("Arg is %S.\n", step->step_argument);
|
||||||
match_results mr = Regexp::create_mr();
|
match_results mr = Regexp::create_mr();
|
||||||
inter_symbol *S = NULL;
|
inter_package *pack = NULL;
|
||||||
if (Regexp::match(&mr, step->step_argument, L"(%d):(%c+)")) {
|
if (Regexp::match(&mr, step->step_argument, L"(%d):(%c+)")) {
|
||||||
int from_rep = Str::atoi(mr.exp[0], 0);
|
int from_rep = Str::atoi(mr.exp[0], 0);
|
||||||
if (step->pipeline->repositories[from_rep] == NULL)
|
if (step->pipeline->repositories[from_rep] == NULL)
|
||||||
internal_error("no such repository");
|
internal_error("no such repository");
|
||||||
S = Inter::SymbolsTables::url_name_to_symbol(
|
pack = Inter::Packages::by_url(
|
||||||
step->pipeline->repositories[from_rep], NULL, mr.exp[1]);
|
step->pipeline->repositories[from_rep], mr.exp[1]);
|
||||||
}
|
}
|
||||||
Regexp::dispose_of(&mr);
|
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 (pack == NULL) internal_error("not a package");
|
||||||
|
|
||||||
if (trace_bin) WRITE_TO(STDOUT, "Move %S\n", Inter::Packages::name(pack));
|
if (trace_bin) WRITE_TO(STDOUT, "Move %S\n", Inter::Packages::name(pack));
|
||||||
|
|
|
@ -13,16 +13,11 @@ int CodeGen::run_pipeline_stage(pipeline_step *step) {
|
||||||
if (step->target_argument == NULL) internal_error("no target specified");
|
if (step->target_argument == NULL) internal_error("no target specified");
|
||||||
inter_package *which = NULL;
|
inter_package *which = NULL;
|
||||||
if (Str::len(step->package_argument) > 0) {
|
if (Str::len(step->package_argument) > 0) {
|
||||||
inter_symbol *symb = Inter::SymbolsTables::url_name_to_symbol(step->repository,
|
which = Inter::Packages::by_url(step->repository,
|
||||||
NULL, step->package_argument);
|
step->package_argument);
|
||||||
if (symb == NULL) {
|
|
||||||
LOG("Arg %S\n", step->package_argument);
|
|
||||||
internal_error("no such package name");
|
|
||||||
}
|
|
||||||
which = Inter::Package::which(symb);
|
|
||||||
if (which == NULL) {
|
if (which == NULL) {
|
||||||
LOG("Arg %S\n", step->package_argument);
|
LOG("Arg %S\n", step->package_argument);
|
||||||
internal_error("that's not a package name");
|
internal_error("no such package name");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,10 @@ To manage packages of inter code.
|
||||||
typedef struct inter_package {
|
typedef struct inter_package {
|
||||||
struct inter_tree_node *package_head;
|
struct inter_tree_node *package_head;
|
||||||
inter_t index_n;
|
inter_t index_n;
|
||||||
struct inter_symbol *package_name;
|
struct text_stream *package_name_t;
|
||||||
struct inter_symbols_table *package_scope;
|
struct inter_symbols_table *package_scope;
|
||||||
int package_flags;
|
int package_flags;
|
||||||
|
struct dictionary *name_lookup;
|
||||||
MEMORY_MANAGEMENT
|
MEMORY_MANAGEMENT
|
||||||
} inter_package;
|
} inter_package;
|
||||||
|
|
||||||
|
@ -29,9 +30,10 @@ inter_package *Inter::Packages::new(inter_tree *I, inter_t n) {
|
||||||
inter_package *pack = CREATE(inter_package);
|
inter_package *pack = CREATE(inter_package);
|
||||||
pack->package_head = NULL;
|
pack->package_head = NULL;
|
||||||
pack->package_scope = NULL;
|
pack->package_scope = NULL;
|
||||||
pack->package_name = NULL;
|
|
||||||
pack->package_flags = 0;
|
pack->package_flags = 0;
|
||||||
|
pack->package_name_t = NULL;
|
||||||
pack->index_n = n;
|
pack->index_n = n;
|
||||||
|
pack->name_lookup = Dictionaries::new(INITIAL_INTER_SYMBOLS_ID_RANGE, FALSE);
|
||||||
return pack;
|
return pack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +50,7 @@ inter_tree *Inter::Packages::tree(inter_package *pack) {
|
||||||
|
|
||||||
text_stream *Inter::Packages::name(inter_package *pack) {
|
text_stream *Inter::Packages::name(inter_package *pack) {
|
||||||
if (pack == NULL) return NULL;
|
if (pack == NULL) return NULL;
|
||||||
return pack->package_name->symbol_name;
|
return pack->package_name_t;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Inter::Packages::is_codelike(inter_package *pack) {
|
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;
|
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 (P == NULL) internal_error("null package");
|
||||||
if (N == NULL) internal_error("null package name");
|
if (N == NULL) internal_error("null package name");
|
||||||
P->package_name = N;
|
P->package_name_t = Str::duplicate(N);
|
||||||
if ((N) && (Str::eq(N->symbol_name, I"main")))
|
if ((N) && (Str::eq(P->package_name_t, I"main")))
|
||||||
Inter::Tree::set_main_package(Inter::Packages::tree(P), P);
|
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) {
|
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_package *Inter::Packages::basics(inter_tree *I) {
|
||||||
inter_symbol *S = Inter::Packages::search_main_exhaustively(I, I"basics");
|
return Inter::Packages::by_url(I, I"/main/generic/basics");
|
||||||
if (S) return Inter::Package::which(S);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inter_package *Inter::Packages::veneer(inter_tree *I) {
|
inter_package *Inter::Packages::veneer(inter_tree *I) {
|
||||||
inter_symbol *S = Inter::Packages::search_main_exhaustively(I, I"veneer");
|
return Inter::Packages::by_url(I, I"/main/veneer");
|
||||||
if (S) return Inter::Package::which(S);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inter_package *Inter::Packages::template(inter_tree *I) {
|
inter_package *Inter::Packages::template(inter_tree *I) {
|
||||||
inter_symbol *S = Inter::Packages::search_main_exhaustively(I, I"template");
|
return Inter::Packages::by_url(I, I"/main/template");
|
||||||
if (S) return Inter::Package::which(S);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inter_symbol *Inter::Packages::search_exhaustively(inter_package *P, text_stream *S) {
|
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) {
|
inter_package *Inter::Packages::by_name(inter_package *P, text_stream *name) {
|
||||||
if (P == NULL) return NULL;
|
if (P == NULL) return NULL;
|
||||||
inter_symbols_table *at = Inter::Packages::scope(P);
|
dict_entry *de = Dictionaries::find(P->name_lookup, name);
|
||||||
inter_symbol *next_sym = Inter::SymbolsTables::symbol_from_name(at, name);
|
if (de) return (inter_package *) Dictionaries::read_value(P->name_lookup, name);
|
||||||
if (next_sym == NULL) return NULL;
|
return NULL;
|
||||||
return Inter::Package::which(next_sym);
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) {
|
void Inter::SymbolsTables::rfr_visitor(inter_tree *I, inter_tree_node *P, void *state) {
|
||||||
inter_error_location *eloc = (inter_error_location *) state;
|
inter_error_location *eloc = (inter_error_location *) state;
|
||||||
inter_package *pack = Inter::Package::defined_by_frame(P);
|
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;
|
if (Inter::Packages::is_linklike(pack)) return;
|
||||||
inter_symbols_table *T = Inter::Packages::scope(pack);
|
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++) {
|
for (int i=0; i<T->size; i++) {
|
||||||
inter_symbol *symb = T->symbol_array[i];
|
inter_symbol *symb = T->symbol_array[i];
|
||||||
if ((symb) && (symb->equated_name)) {
|
if ((symb) && (symb->equated_name)) {
|
||||||
|
|
|
@ -214,7 +214,7 @@ inter_error_message *Inter::Defn::write_construct_text_allowing_nop(OUTPUT_STREA
|
||||||
return E;
|
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_error_message *Inter::Defn::read_construct_text(text_stream *line, inter_error_location *eloc, inter_bookmark *IBM) {
|
||||||
inter_line_parse ilp;
|
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);
|
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))) {
|
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)));
|
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);
|
return Inter::Errors::plain(I"bad inter line", eloc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Inter::Defn::set_latest_package_symbol(inter_symbol *F) {
|
void Inter::Defn::set_latest_block_package(inter_package *F) {
|
||||||
latest_block_symbol = F;
|
latest_block_package = F;
|
||||||
}
|
}
|
||||||
|
|
||||||
inter_symbol *Inter::Defn::get_latest_block_symbol(void) {
|
inter_package *Inter::Defn::get_latest_block_package(void) {
|
||||||
return latest_block_symbol;
|
return latest_block_package;
|
||||||
}
|
}
|
||||||
|
|
||||||
inter_error_message *Inter::Defn::vet_level(inter_bookmark *IBM, inter_t cons, int level, inter_error_location *eloc) {
|
inter_error_message *Inter::Defn::vet_level(inter_bookmark *IBM, inter_t cons, int level, inter_error_location *eloc) {
|
||||||
|
|
|
@ -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");
|
if (BinaryFiles::read_int32(fh, &rl) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||||
unsigned int sc;
|
unsigned int sc;
|
||||||
if (BinaryFiles::read_int32(fh, &sc) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
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;
|
inter_package *parent = NULL;
|
||||||
if (p != 0) parent = Inter::Warehouse::get_package(warehouse, grid[p]);
|
if (p != 0) parent = Inter::Warehouse::get_package(warehouse, grid[p]);
|
||||||
if (res->stored_package == NULL) {
|
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];
|
if (grid) sc = grid[sc];
|
||||||
Inter::Packages::set_scope(res->stored_package, Inter::Warehouse::get_symbols_table(warehouse, sc));
|
Inter::Packages::set_scope(res->stored_package, Inter::Warehouse::get_symbols_table(warehouse, sc));
|
||||||
}
|
}
|
||||||
if (nid != 0) {
|
TEMPORARY_TEXT(N);
|
||||||
inter_symbol *pack_name = Inter::SymbolsTables::symbol_from_id(parent?(Inter::Packages::scope(parent)):Inter::Tree::global_scope(I), nid);
|
unsigned int L;
|
||||||
if (pack_name)
|
if (BinaryFiles::read_int32(fh, &L) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||||
Inter::Packages::set_name(res->stored_package, pack_name);
|
for (unsigned int i=0; i<L; i++) {
|
||||||
else
|
unsigned int c;
|
||||||
Inter::Binary::read_error(&eloc, ftell(fh), I"unable to retrieve package name");
|
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@> =
|
@<Write a package resource@> =
|
||||||
inter_package *P = res->stored_package;
|
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_codelike(P));
|
||||||
BinaryFiles::write_int32(fh, (unsigned int) Inter::Packages::is_rootlike(P));
|
BinaryFiles::write_int32(fh, (unsigned int) Inter::Packages::is_rootlike(P));
|
||||||
BinaryFiles::write_int32(fh, (unsigned int) P->package_scope->n_index);
|
BinaryFiles::write_int32(fh, (unsigned int) P->package_scope->n_index);
|
||||||
if (P->package_name)
|
BinaryFiles::write_int32(fh, (unsigned int) Str::len(P->package_name_t));
|
||||||
BinaryFiles::write_int32(fh, (unsigned int) P->package_name->symbol_ID);
|
LOOP_THROUGH_TEXT(C, P->package_name_t)
|
||||||
else
|
BinaryFiles::write_int32(fh, (unsigned int) Str::get(C));
|
||||||
BinaryFiles::write_int32(fh, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ We do nothing here, because frame lists are built new on reading. It's
|
@ We do nothing here, because frame lists are built new on reading. It's
|
||||||
|
|
|
@ -22,10 +22,9 @@ void Inter::Package::define(void) {
|
||||||
|
|
||||||
@
|
@
|
||||||
|
|
||||||
@d DEFN_PACKAGE_IFLD 2
|
@d PTYPE_PACKAGE_IFLD 2
|
||||||
@d PTYPE_PACKAGE_IFLD 3
|
@d SYMBOLS_PACKAGE_IFLD 3
|
||||||
@d SYMBOLS_PACKAGE_IFLD 4
|
@d PID_PACKAGE_IFLD 4
|
||||||
@d PID_PACKAGE_IFLD 5
|
|
||||||
|
|
||||||
=
|
=
|
||||||
void Inter::Package::read(inter_construct *IC, inter_bookmark *IBM, inter_line_parse *ilp, inter_error_location *eloc, inter_error_message **E) {
|
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_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) {
|
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 =
|
inter_symbol *package_name =
|
||||||
(uniquely) ? (Inter::SymbolsTables::create_with_unique_name(Inter::Bookmarks::scope(IBM), name))
|
(uniquely) ? (Inter::SymbolsTables::create_with_unique_name(Inter::Bookmarks::scope(IBM), A))
|
||||||
: (Inter::SymbolsTables::symbol_from_name_creating(Inter::Bookmarks::scope(IBM), name));
|
: (Inter::SymbolsTables::symbol_from_name_creating(Inter::Bookmarks::scope(IBM), A));
|
||||||
return Inter::Package::new_package(IBM, package_name, ptype_name, level, eloc, created);
|
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_t STID = Inter::Warehouse::create_symbols_table(Inter::Bookmarks::warehouse(IBM));
|
||||||
inter_tree_node *P = Inter::Node::fill_4(IBM,
|
inter_tree_node *P = Inter::Node::fill_3(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);
|
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);
|
inter_error_message *E = Inter::Defn::verify_construct(Inter::Bookmarks::package(IBM), P);
|
||||||
if (E) return E;
|
if (E) return E;
|
||||||
Inter::Bookmarks::insert(IBM, P);
|
Inter::Bookmarks::insert(IBM, P);
|
||||||
|
|
||||||
inter_t PID = Inter::Warehouse::create_package(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::tree(IBM));
|
Inter::Packages::set_name(Inter::Bookmarks::package(IBM), pack, name_text);
|
||||||
inter_package *pack = Inter::Warehouse::get_package(Inter::Bookmarks::warehouse(IBM), PID);
|
|
||||||
pack->package_head = P;
|
|
||||||
Inter::Packages::set_name(pack, package_name);
|
|
||||||
if (ptype_name == code_packagetype) Inter::Packages::make_codelike(pack);
|
if (ptype_name == code_packagetype) Inter::Packages::make_codelike(pack);
|
||||||
if ((linkage_packagetype) && (ptype_name == linkage_packagetype))
|
if ((linkage_packagetype) && (ptype_name == linkage_packagetype))
|
||||||
Inter::Packages::make_linklike(pack);
|
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;
|
if (created) *created = pack;
|
||||||
LOGIF(INTER_SYMBOLS, "Package $6 at IBM $5\n", pack, IBM);
|
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) {
|
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]);
|
inter_package *pack = Inter::Node::ID_to_package(P, P->W.data[PID_PACKAGE_IFLD]);
|
||||||
if (pack) pack->package_head = P;
|
if (pack) pack->package_head = P;
|
||||||
|
else internal_error("uh?");
|
||||||
inter_symbols_table *T = Inter::Packages::scope(owner);
|
inter_symbols_table *T = Inter::Packages::scope(owner);
|
||||||
if (T == NULL) T = Inter::Node::globals(P);
|
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_block_package(pack);
|
||||||
Inter::Defn::set_latest_package_symbol(package_name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Inter::Package::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_node *P, inter_error_message **E) {
|
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);
|
inter_symbol *ptype_name = Inter::SymbolsTables::global_symbol_from_frame_data(P, PTYPE_PACKAGE_IFLD);
|
||||||
if ((package_name) && (ptype_name)) {
|
if ((pack) && (ptype_name)) {
|
||||||
WRITE("package %S %S", package_name->symbol_name, ptype_name->symbol_name);
|
WRITE("package %S %S", Inter::Packages::name(pack), ptype_name->symbol_name);
|
||||||
} else {
|
} 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;
|
*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_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);
|
inter_package *pack = Inter::Package::defined_by_frame(P);
|
||||||
if (package_name) {
|
if (pack) {
|
||||||
inter_symbols_table *locals = Inter::Package::local_symbols(package_name);
|
inter_symbols_table *locals = Inter::Packages::scope(pack);
|
||||||
Inter::SymbolsTables::write_declarations(OUT, locals, (int) (P->W.data[LEVEL_IFLD] + 1));
|
Inter::SymbolsTables::write_declarations(OUT, locals, (int) (P->W.data[LEVEL_IFLD] + 1));
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -24,7 +24,7 @@ void Inter::Symbol::read(inter_construct *IC, inter_bookmark *IBM, inter_line_pa
|
||||||
if (*E) return;
|
if (*E) return;
|
||||||
if (Inter::Annotations::exist(&(ilp->set))) { *E = Inter::Errors::plain(I"__annotations are not allowed", eloc); 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 *symbol_name = ilp->mr.exp[2];
|
||||||
text_stream *trans_name = NULL;
|
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_symbol *name_name = NULL;
|
||||||
inter_t level = 0;
|
inter_t level = 0;
|
||||||
if (routine) {
|
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; }
|
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);
|
name_name = Inter::Textual::new_symbol(eloc, locals, symbol_name, E);
|
||||||
if (*E) return;
|
if (*E) return;
|
||||||
|
|
|
@ -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);
|
*E = Inter::Defn::vet_level(IBM, CAST_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
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);
|
inter_symbol *from_kind = Inter::Textual::find_symbol(Inter::Bookmarks::tree(IBM), eloc, Inter::Bookmarks::scope(IBM), ilp->mr.exp[1], KIND_IST, E);
|
||||||
|
|
|
@ -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);
|
*E = Inter::Defn::vet_level(IBM, CODE_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
if (routine == NULL) { *E = Inter::Errors::plain(I"'code' used outside function", eloc); return; }
|
||||||
|
|
||||||
*E = Inter::Code::new(IBM, ilp->indent_level, eloc);
|
*E = Inter::Code::new(IBM, ilp->indent_level, eloc);
|
||||||
|
|
|
@ -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);
|
*E = Inter::Defn::vet_level(IBM, EVALUATION_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
if (routine == NULL) { *E = Inter::Errors::plain(I"'evaluation' used outside function", eloc); return; }
|
||||||
|
|
||||||
*E = Inter::Evaluation::new(IBM, ilp->indent_level, eloc);
|
*E = Inter::Evaluation::new(IBM, ilp->indent_level, eloc);
|
||||||
|
|
|
@ -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);
|
*E = Inter::Defn::vet_level(IBM, INV_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
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]);
|
inter_symbol *invoked_name = Inter::SymbolsTables::symbol_from_name(Inter::Tree::global_scope(Inter::Bookmarks::tree(IBM)), ilp->mr.exp[0]);
|
||||||
|
|
|
@ -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);
|
*E = Inter::Defn::vet_level(IBM, LAB_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
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; }
|
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]);
|
inter_symbol *label = Inter::SymbolsTables::symbol_from_name(locals, ilp->mr.exp[0]);
|
||||||
|
|
|
@ -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; }
|
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);
|
*E = Inter::Defn::vet_level(IBM, LABEL_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
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; }
|
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]);
|
inter_symbol *lab_name = Inter::SymbolsTables::symbol_from_name(locals, ilp->mr.exp[0]);
|
||||||
|
|
|
@ -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) {
|
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);
|
*E = Inter::Defn::vet_level(IBM, LOCAL_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
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; }
|
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);
|
inter_symbol *var_name = Inter::Textual::find_undefined_symbol(IBM, eloc, locals, ilp->mr.exp[0], E);
|
||||||
|
|
|
@ -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);
|
*E = Inter::Defn::vet_level(IBM, REF_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
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; }
|
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);
|
inter_symbol *ref_kind = Inter::Textual::find_symbol(Inter::Bookmarks::tree(IBM), eloc, Inter::Bookmarks::scope(IBM), ilp->mr.exp[0], KIND_IST, E);
|
||||||
|
|
|
@ -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);
|
*E = Inter::Defn::vet_level(IBM, REFERENCE_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
if (routine == NULL) { *E = Inter::Errors::plain(I"'reference' used outside function", eloc); return; }
|
||||||
|
|
||||||
*E = Inter::Reference::new(IBM, ilp->indent_level, eloc);
|
*E = Inter::Reference::new(IBM, ilp->indent_level, eloc);
|
||||||
|
|
|
@ -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);
|
*E = Inter::Defn::vet_level(IBM, SPLAT_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
if (*E) return;
|
||||||
|
|
||||||
inter_symbol *routine = NULL;
|
inter_package *routine = NULL;
|
||||||
if (ilp->indent_level > 0) {
|
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; }
|
if (routine == NULL) { *E = Inter::Errors::plain(I"indented 'splat' used outside function", eloc); return; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
*E = Inter::Defn::vet_level(IBM, VAL_IST, ilp->indent_level, eloc);
|
||||||
if (*E) return;
|
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; }
|
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; }
|
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);
|
inter_symbol *val_kind = Inter::Textual::find_symbol(Inter::Bookmarks::tree(IBM), eloc, Inter::Bookmarks::scope(IBM), ilp->mr.exp[0], KIND_IST, E);
|
||||||
|
|
Loading…
Reference in a new issue