1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-02 23:14:57 +03:00

Removed vestigial import-export mechanism

This commit is contained in:
Graham Nelson 2019-06-26 17:27:54 +01:00
parent 04aef17c9f
commit be07096f1f
68 changed files with 568 additions and 1270 deletions

View file

@ -34,6 +34,7 @@
<span class="definitionkeyword">enum</span> <span class="constant">inter_schema_token_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">routine_body_request_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">pipeline_stage_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">code_generation_target_MT</span>
</pre>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>With allocation functions:
</p>
@ -50,6 +51,7 @@
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inter_schema_token</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">routine_body_request</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">pipeline_stage</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">code_generation_target</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>1/stg</title>
<title>1/trg</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
@ -24,6 +24,7 @@ have no meaningful contents when the step is not running.
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">pipeline_step</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">pipeline_stage</span><span class="plain"> *</span><span class="identifier">step_stage</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">step_argument</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">code_generation_target</span><span class="plain"> *</span><span class="identifier">target_argument</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">parsed_filename</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">pathname</span><span class="plain"> **</span><span class="identifier">the_PP</span><span class="plain">;</span>
@ -46,7 +47,7 @@ have no meaningful contents when the step is not running.
<p class="endnote">The function CodeGen::Pipeline::new_step is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The structure pipeline_step is accessed in 1/stg, 2/imp, 2/lnk, 2/plm, 2/rcc, 2/alm, 2/res, 2/unq, 2/rv, 2/erm, 2/erl, 2/inv, 4/cg and here.</p>
<p class="endnote">The structure pipeline_step is accessed in 2/lnk, 2/plm, 2/rcc, 2/alm, 2/res, 2/unq, 2/rv, 2/erm, 2/erl, 2/inv, 4/cg and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>This wipes clean the temporary storage for a step.
</p>
@ -73,17 +74,33 @@ logging:
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::Pipeline::write_step</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</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">if</span><span class="plain"> (</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;step_stage</span><span class="plain">-</span><span class="element">&gt;stage_arg</span><span class="plain"> == </span><span class="constant">NO_STAGE_ARG</span><span class="plain">)</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;step_stage</span><span class="plain">-</span><span class="element">&gt;stage_name</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S:%S"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;step_stage</span><span class="plain">-</span><span class="element">&gt;stage_name</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;step_argument</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;step_stage</span><span class="plain">-</span><span class="element">&gt;stage_name</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">&gt;step_stage</span><span class="plain">-</span><span class="element">&gt;stage_arg</span><span class="plain"> != </span><span class="constant">NO_STAGE_ARG</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">":"</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">&gt;target_argument</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" %S -&gt;"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;target_argument</span><span class="plain">-</span><span class="element">&gt;target_name</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" %S"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;step_argument</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">pipeline_step</span><span class="plain"> *</span><span class="functiontext">CodeGen::Pipeline::read_step</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">step</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">leafname</span><span class="plain">) {</span>
<span class="functiontext">CodeGen::Stage::make_stages</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Targets::make_targets</span><span class="plain">();</span>
<span class="reserved">pipeline_step</span><span class="plain"> *</span><span class="identifier">ST</span><span class="plain"> = </span><span class="functiontext">CodeGen::Pipeline::new_step</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="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c+?) *: *(%c*)"</span><span class="plain">)) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c+?) *: *(%C*) *-&gt; *(%c*)"</span><span class="plain">)) {</span>
<span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;step_argument</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="reserved">code_generation_target</span><span class="plain"> *</span><span class="identifier">cgt</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">cgt</span><span class="plain">, </span><span class="reserved">code_generation_target</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</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">cgt</span><span class="plain">-</span><span class="element">&gt;target_name</span><span class="plain">))</span>
<span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;target_argument</span><span class="plain"> = </span><span class="identifier">cgt</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;target_argument</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"No such code generation target as '%S'\</span><span class="plain">n</span><span class="string">"</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">internal_error</span><span class="plain">(</span><span class="string">"no such target"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;step_argument</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[2]);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;step_argument</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"*"</span><span class="plain">)) </span><span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;step_argument</span><span class="plain">, </span><span class="identifier">leafname</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">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c+?) *: *(%c*)"</span><span class="plain">)) {</span>
<span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;step_argument</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;step_argument</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">Str::copy</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>
@ -93,7 +110,11 @@ logging:
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">stage</span><span class="plain">, </span><span class="reserved">pipeline_stage</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">, </span><span class="identifier">stage</span><span class="plain">-</span><span class="element">&gt;stage_name</span><span class="plain">))</span>
<span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;step_stage</span><span class="plain"> = </span><span class="identifier">stage</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;step_stage</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 step code"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ST</span><span class="plain">-</span><span class="element">&gt;step_stage</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"No such step as '%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="identifier">internal_error</span><span class="plain">(</span><span class="string">"no such step code"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">ST</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
@ -128,11 +149,15 @@ logging:
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::Pipeline::parse_into</span><span class="plain">(</span><span class="reserved">codegen_pipeline</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">instructions</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">leafname</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">instructions</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
<span class="identifier">instructions</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"link:Output.i6t, parse-linked-matter, resolve-conditional-compilation, assimilate, reconcile-verbs, generate-i6:*"</span><span class="plain">;</span>
<span class="identifier">instructions</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"link:Output.i6t, parse-linked-matter, resolve-conditional-compilation, assimilate, reconcile-verbs, generate: inform6 -&gt; *"</span><span class="plain">;</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">instructions</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">instructions</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Characters::is_babel_whitespace</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="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="character">' '</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">T</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="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="reserved">while</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">L</span><span class="string">" *(%c+?) *, *(%c*)"</span><span class="plain">)) {</span>
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">L</span><span class="string">" *(%c+?) *, *(%c*?) *"</span><span class="plain">)) {</span>
<span class="reserved">pipeline_step</span><span class="plain"> *</span><span class="identifier">ST</span><span class="plain"> = </span><span class="functiontext">CodeGen::Pipeline::read_step</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], </span><span class="identifier">leafname</span><span class="plain">);</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">ST</span><span class="plain">, </span><span class="reserved">pipeline_step</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;steps</span><span class="plain">);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]);</span>
@ -143,14 +168,6 @@ logging:
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Pipeline::port_direction</span><span class="plain">(</span><span class="reserved">codegen_pipeline</span><span class="plain"> *</span><span class="identifier">pipeline</span><span class="plain">) {</span>
<span class="reserved">pipeline_step</span><span class="plain"> *</span><span class="identifier">SS</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">SS</span><span class="plain">, </span><span class="reserved">pipeline_step</span><span class="plain">, </span><span class="identifier">pipeline</span><span class="plain">-</span><span class="element">&gt;steps</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">SS</span><span class="plain">-</span><span class="element">&gt;step_stage</span><span class="plain">-</span><span class="element">&gt;port_direction</span><span class="plain"> != 0)</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">SS</span><span class="plain">-</span><span class="element">&gt;step_stage</span><span class="plain">-</span><span class="element">&gt;port_direction</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> 0;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::Pipeline::run</span><span class="plain">(</span><span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">codegen_pipeline</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">pathname</span><span class="plain"> **</span><span class="identifier">PP</span><span class="plain">, </span><span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">PM</span><span class="plain">, </span><span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">FM</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="reserved">return</span><span class="plain">;</span>
<span class="identifier">clock_t</span><span class="plain"> </span><span class="identifier">start</span><span class="plain"> = </span><span class="identifier">clock</span><span class="plain">();</span>
@ -225,8 +242,6 @@ logging:
<p class="endnote">The function CodeGen::Pipeline::parse_into appears nowhere else.</p>
<p class="endnote">The function CodeGen::Pipeline::port_direction appears nowhere else.</p>
<p class="endnote">The function CodeGen::Pipeline::run appears nowhere else.</p>
<p class="endnote">The structure codegen_pipeline is private to this section.</p>
@ -291,7 +306,7 @@ logging:
<p class="endnote">The function CodeGen::Pipeline::prepare_to_run is used in <a href="#SP4">&#167;4</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-stg.html">Back to 'Stages'</a></li><li><i>(This section ends Chapter 1: Setting Up.)</i></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="1-trg.html">Back to 'Targets'</a></li><li><i>(This section ends Chapter 1: Setting Up.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -11,7 +11,7 @@
<!--Weave of '1/stg' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">codegen</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Stages</b></li></ul><p class="purpose">To create the stages through which code generation proceeds.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Stages</a></li><li><a href="#SP3">&#167;3. Creation</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Stages</a></li><li><a href="#SP2">&#167;2. Creation</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Stages. </b>Each possible pipeline stage is represented by a single instance of the
following. Some stages are invoked with an argument, often the filename to
@ -32,7 +32,6 @@ write output to; others are not.
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">pipeline_stage</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">stage_name</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> (*</span><span class="identifier">execute</span><span class="plain">)(</span><span class="reserved">void</span><span class="plain"> *);</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">port_direction</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">stage_arg</span><span class="plain">; </span> <span class="comment">one of the <code class="display"><span class="extract">*_ARG</span></code> values above</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">pipeline_stage</span><span class="plain">;</span>
@ -41,7 +40,6 @@ write output to; others are not.
<span class="reserved">pipeline_stage</span><span class="plain"> *</span><span class="identifier">stage</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">pipeline_stage</span><span class="plain">);</span>
<span class="identifier">stage</span><span class="plain">-</span><span class="element">&gt;stage_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">stage</span><span class="plain">-</span><span class="element">&gt;execute</span><span class="plain"> = (</span><span class="reserved">int</span><span class="plain"> (*)(</span><span class="reserved">void</span><span class="plain"> *)) </span><span class="identifier">X</span><span class="plain">;</span>
<span class="identifier">stage</span><span class="plain">-</span><span class="element">&gt;port_direction</span><span class="plain"> = 0;</span>
<span class="identifier">stage</span><span class="plain">-</span><span class="element">&gt;stage_arg</span><span class="plain"> = </span><span class="identifier">arg</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">stage</span><span class="plain">;</span>
<span class="plain">}</span>
@ -49,26 +47,11 @@ write output to; others are not.
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Stage::new is used in <a href="#SP3">&#167;3</a>, 2/imp (<a href="2-imp.html#SP1">&#167;1</a>), 2/lnk (<a href="2-lnk.html#SP1">&#167;1</a>), 2/plm (<a href="2-plm.html#SP1">&#167;1</a>), 2/rcc (<a href="2-rcc.html#SP1">&#167;1</a>), 2/alm (<a href="2-alm.html#SP1">&#167;1</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 2/unq (<a href="2-unq.html#SP1">&#167;1</a>), 2/rv (<a href="2-rv.html#SP1">&#167;1</a>), 2/erm (<a href="2-erm.html#SP1">&#167;1</a>), 2/erl (<a href="2-erl.html#SP1">&#167;1</a>), 2/inv (<a href="2-inv.html#SP1">&#167;1</a>), 4/cg (<a href="4-cg.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function CodeGen::Stage::new is used in <a href="#SP2">&#167;2</a>, 2/lnk (<a href="2-lnk.html#SP1">&#167;1</a>), 2/plm (<a href="2-plm.html#SP1">&#167;1</a>), 2/rcc (<a href="2-rcc.html#SP1">&#167;1</a>), 2/alm (<a href="2-alm.html#SP1">&#167;1</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 2/unq (<a href="2-unq.html#SP1">&#167;1</a>), 2/rv (<a href="2-rv.html#SP1">&#167;1</a>), 2/erm (<a href="2-erm.html#SP1">&#167;1</a>), 2/erl (<a href="2-erl.html#SP1">&#167;1</a>), 2/inv (<a href="2-inv.html#SP1">&#167;1</a>), 4/cg (<a href="4-cg.html#SP1">&#167;1</a>).</p>
<p class="endnote">The structure pipeline_stage is accessed in 1/ppl, 2/imp and here.</p>
<p class="endnote">The structure pipeline_stage is accessed in 1/ppl and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>Supplying this as the execute routine for a stage marks it as disabled.
</p>
<pre class="display">
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Stage::stage_disabled</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">WRITE_TO</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;text_out_file</span><span class="plain">, </span><span class="string">"Currently disabled\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Stage::stage_disabled is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Creation. </b>To add a new pipeline stage, put the code for it into a new section in
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Creation. </b>To add a new pipeline stage, put the code for it into a new section in
Chapter 2, and then add a call to its <code class="display"><span class="extract">create_pipeline_stage</span></code> routine
to the routine below.
</p>
@ -81,19 +64,10 @@ to the routine below.
<span class="identifier">stages_made</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"stop"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_stop_stage</span><span class="plain">, </span><span class="constant">NO_STAGE_ARG</span><span class="plain">);</span>
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"show-dependencies"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_show_dependencies_stage</span><span class="plain">, </span><span class="constant">EXT_TEXT_OUT_STAGE_ARG</span><span class="plain">);</span>
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"log-dependencies"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_log_dependencies_stage</span><span class="plain">, </span><span class="constant">NO_STAGE_ARG</span><span class="plain">);</span>
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"generate-inter"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_generate_inter_stage</span><span class="plain">, </span><span class="constant">TEXT_OUT_STAGE_ARG</span><span class="plain">);</span>
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"generate-inter-binary"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_generate_inter_binary_stage</span><span class="plain">, </span><span class="constant">FILE_STAGE_ARG</span><span class="plain">);</span>
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"summarise"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_summarise_stage</span><span class="plain">, </span><span class="constant">TEXT_OUT_STAGE_ARG</span><span class="plain">);</span>
<span class="reserved">pipeline_stage</span><span class="plain"> *</span><span class="identifier">ex</span><span class="plain"> = </span><span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"export"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::stage_disabled</span><span class="plain">, </span><span class="constant">EXT_TEXT_OUT_STAGE_ARG</span><span class="plain">);</span>
<span class="identifier">ex</span><span class="plain">-</span><span class="element">&gt;port_direction</span><span class="plain"> = 1;</span>
<span class="functiontext">CodeGen::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Assimilate::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Eliminate::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Externals::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Import::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Inventory::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Labels::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Link::create_pipeline_stage</span><span class="plain">();</span>
@ -109,7 +83,7 @@ to the routine below.
<p class="endnote">The function CodeGen::Stage::make_stages is used in 1/ppl (<a href="1-ppl.html#SP3">&#167;3</a>).</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>The "stop" stage is special, in that it always returns false, thus stopping
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>The "stop" stage is special, in that it always returns false, thus stopping
the pipeline:
</p>
@ -122,54 +96,10 @@ the pipeline:
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Stage::run_stop_stage is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>The remaining stages declared here are all just wrappers for features of the
Inter module. (It doesn't seem worth making 10-line sections for each of them.)
</p>
<pre class="display">
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Stage::run_show_dependencies_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">Inter::Graph::show_dependencies</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Stage::run_log_dependencies_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">Inter::Graph::show_dependencies</span><span class="plain">(</span><span class="identifier">DL</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Stage::run_generate_inter_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">Inter::Textual::write</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, 1);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Stage::run_generate_inter_binary_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">Inter::Binary::write</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;parsed_filename</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Stage::run_summarise_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">Inter::Summary::write</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Stage::run_show_dependencies_stage is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The function CodeGen::Stage::run_log_dependencies_stage is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The function CodeGen::Stage::run_generate_inter_stage is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The function CodeGen::Stage::run_generate_inter_binary_stage is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The function CodeGen::Stage::run_summarise_stage is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The function CodeGen::Stage::run_stop_stage is used in <a href="#SP2">&#167;2</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-cm.html">Back to 'Codegen Module'</a></li><li><a href="1-ppl.html">Continue with 'Pipelines'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="1-cm.html">Back to 'Codegen Module'</a></li><li><a href="1-trg.html">Continue with 'Targets'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -0,0 +1,70 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>1/stg</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<!--Weave of '1/trg' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">codegen</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Targets</b></li></ul><p class="purpose">To create the range of possible targets into which Inter can be converted.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Targets</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Targets. </b>Single, steel-cut artisanal targets are made here:
</p>
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">code_generation_target</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">target_name</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">code_generation_target</span><span class="plain">;</span>
<span class="reserved">code_generation_target</span><span class="plain"> *</span><span class="functiontext">CodeGen::Targets::new</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">code_generation_target</span><span class="plain"> *</span><span class="identifier">cgt</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">code_generation_target</span><span class="plain">);</span>
<span class="identifier">cgt</span><span class="plain">-</span><span class="element">&gt;target_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">cgt</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Targets::new is used in <a href="#SP2">&#167;2</a>, 4/cg (<a href="4-cg.html#SP1">&#167;1</a>).</p>
<p class="endnote">The structure code_generation_target is accessed in 1/ppl, 4/cg and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>And they are mass-produced here:
</p>
<pre class="display">
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">cgts_made</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">code_generation_target</span><span class="plain"> *</span><span class="identifier">binary_inter_cgt</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">code_generation_target</span><span class="plain"> *</span><span class="identifier">textual_inter_cgt</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">code_generation_target</span><span class="plain"> *</span><span class="identifier">summary_cgt</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::Targets::make_targets</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cgts_made</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">cgts_made</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="identifier">binary_inter_cgt</span><span class="plain"> = </span><span class="functiontext">CodeGen::Targets::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"binary"</span><span class="plain">);</span>
<span class="identifier">textual_inter_cgt</span><span class="plain"> = </span><span class="functiontext">CodeGen::Targets::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"text"</span><span class="plain">);</span>
<span class="identifier">summary_cgt</span><span class="plain"> = </span><span class="functiontext">CodeGen::Targets::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"summary"</span><span class="plain">);</span>
<span class="functiontext">CodeGen::create_code_targets</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Targets::make_targets is used in 1/ppl (<a href="1-ppl.html#SP3">&#167;3</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-stg.html">Back to 'Stages'</a></li><li><a href="1-ppl.html">Continue with 'Pipelines'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -30,7 +30,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Assimilate::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::Assimilate::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::Assimilate::run_pipeline_stage appears nowhere else.</p>
@ -579,20 +579,6 @@
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_assimilated_actions</span><span class="plain"> = 0;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::Assimilate::ensure_action</span><span class="plain">(</span><span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">IRS</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">value</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">CodeGen::Link::find_name</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">value</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">) == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">CORE_MODULE_XXXXXXX</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_assimilated_actions</span><span class="plain"> == 0) {</span>
<span class="identifier">assimilated_actions_b</span><span class="plain"> = </span><span class="identifier">Packaging::bubble_at</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">);</span>
<span class="identifier">assimilated_actions</span><span class="plain"> = &amp;</span><span class="identifier">assimilated_actions_b</span><span class="plain">;</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">apack</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">tpack</span><span class="plain"> = </span><span class="identifier">Inter::Packages::template</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">Inter::Defn::set_current_package</span><span class="plain">(&amp;</span><span class="identifier">assimilated_actions_b</span><span class="plain">, </span><span class="identifier">tpack</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">apack_name</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">tpack</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"actions"</span><span class="plain">);</span>
<span class="functiontext">CodeGen::Link::guard</span><span class="plain">(</span><span class="identifier">Inter::Package::new_package</span><span class="plain">(&amp;</span><span class="identifier">assimilated_actions_b</span><span class="plain">, </span><span class="identifier">apack_name</span><span class="plain">,</span>
<span class="identifier">plain_packagetype</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">assimilated_actions</span><span class="plain">-&gt;</span><span class="identifier">latest_indent</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, &amp;</span><span class="identifier">apack</span><span class="plain">));</span>
<span class="identifier">Inter::Defn::set_current_package</span><span class="plain">(&amp;</span><span class="identifier">assimilated_actions_b</span><span class="plain">, </span><span class="identifier">apack</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">#</span><span class="identifier">endif</span>
<span class="identifier">assimilated_actions</span><span class="plain"> = </span><span class="functiontext">CodeGen::Assimilate::diversion</span><span class="plain">(</span><span class="constant">ACTION_ASSIM_BM</span><span class="plain">);</span>
<span class="identifier">assimilated_actions</span><span class="plain">-&gt;</span><span class="identifier">cp_indent</span><span class="plain"> = 1;</span>
@ -610,15 +596,12 @@
<span class="identifier">ptype</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">assimilated_actions</span><span class="plain">-&gt;</span><span class="identifier">cp_indent</span><span class="plain"> + 2, </span><span class="identifier">NULL</span><span class="plain">, &amp;</span><span class="identifier">housing_package</span><span class="plain">));</span>
<span class="identifier">Inter::Defn::set_current_package</span><span class="plain">(</span><span class="identifier">assimilated_actions</span><span class="plain">, </span><span class="identifier">housing_package</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">asymb</span><span class="plain"> = </span><span class="functiontext">CodeGen::Assimilate::maybe_extern</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">value</span><span class="plain">, </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">housing_package</span><span class="plain">));</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Well, it's $3\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">asymb</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">unsharped</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">unsharped</span><span class="plain">, </span><span class="string">"%SSub"</span><span class="plain">, </span><span class="identifier">value</span><span class="plain">);</span>
<span class="identifier">Str::delete_first_character</span><span class="plain">(</span><span class="identifier">unsharped</span><span class="plain">);</span>
<span class="identifier">Str::delete_first_character</span><span class="plain">(</span><span class="identifier">unsharped</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">txsymb</span><span class="plain"> = </span><span class="functiontext">CodeGen::Link::find_name</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">unsharped</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Found $3\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">txsymb</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">txsymb</span><span class="plain"> = </span><span class="functiontext">CodeGen::Link::find_name</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">unsharped</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">xsymb</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">housing_package</span><span class="plain">), </span><span class="identifier">unsharped</span><span class="plain">);</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Made $3\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">xsymb</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">txsymb</span><span class="plain">) </span><span class="identifier">Inter::SymbolsTables::equate</span><span class="plain">(</span><span class="identifier">xsymb</span><span class="plain">, </span><span class="identifier">txsymb</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">unsharped</span><span class="plain">);</span>
<span class="functiontext">CodeGen::Link::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">assimilated_actions</span><span class="plain">,</span>

View file

@ -44,7 +44,7 @@ on the Inter functions in a repository.
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Labels::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::Labels::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::Labels::run_pipeline_stage appears nowhere else.</p>

View file

@ -29,7 +29,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Eliminate::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::Eliminate::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::Eliminate::run_pipeline_stage appears nowhere else.</p>

View file

@ -30,7 +30,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Inventory::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::Inventory::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::Inventory::run_pipeline_stage appears nowhere else.</p>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>2/imp</title>
<title>1/ppl</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
@ -138,7 +138,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Link::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::Link::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::Link::run_pipeline_stage appears nowhere else.</p>
@ -269,7 +269,7 @@
<p class="endnote">The function CodeGen::Link::receive_command is used in <a href="#SP1">&#167;1</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="2-imp.html">Back to 'Import'</a></li><li><a href="2-itr.html">Continue with 'I6 Template Reader'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 2: Linking.)</i></li><li><a href="2-itr.html">Continue with 'I6 Template Reader'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -29,7 +29,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::PLM::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::PLM::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::PLM::run_pipeline_stage appears nowhere else.</p>

View file

@ -29,7 +29,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::RCC::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::RCC::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::RCC::run_pipeline_stage appears nowhere else.</p>

View file

@ -29,7 +29,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Externals::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::Externals::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::Externals::run_pipeline_stage appears nowhere else.</p>

View file

@ -29,7 +29,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::ReconcileVerbs::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::ReconcileVerbs::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::ReconcileVerbs::run_pipeline_stage appears nowhere else.</p>

View file

@ -29,7 +29,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Uniqueness::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::Uniqueness::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::Uniqueness::run_pipeline_stage appears nowhere else.</p>

View file

@ -18,28 +18,40 @@
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::create_pipeline_stage</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"generate-i6"</span><span class="plain">, </span><span class="functiontext">CodeGen::run_pipeline_stage</span><span class="plain">, </span><span class="constant">TEXT_OUT_STAGE_ARG</span><span class="plain">);</span>
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"generate"</span><span class="plain">, </span><span class="functiontext">CodeGen::run_pipeline_stage</span><span class="plain">, </span><span class="constant">TEXT_OUT_STAGE_ARG</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">code_generation_target</span><span class="plain"> *</span><span class="identifier">Inform_6_cgt</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::create_code_targets</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">Inform_6_cgt</span><span class="plain"> = </span><span class="functiontext">CodeGen::Targets::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"inform6"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::run_pipeline_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="functiontext">CodeGen::to_I6</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;text_out_file</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">&gt;target_argument</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no target specified"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;target_argument</span><span class="plain"> == </span><span class="identifier">binary_inter_cgt</span><span class="plain">)</span>
<span class="identifier">Inter::Binary::write</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;parsed_filename</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">);</span>
<span class="reserved">else</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">&gt;target_argument</span><span class="plain"> == </span><span class="identifier">textual_inter_cgt</span><span class="plain">)</span>
<span class="identifier">Inter::Textual::write</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, 1);</span>
<span class="reserved">else</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">&gt;target_argument</span><span class="plain"> == </span><span class="identifier">summary_cgt</span><span class="plain">)</span>
<span class="identifier">Inter::Summary::write</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">CodeGen::generate</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function CodeGen::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::create_code_targets is used in 1/trg (<a href="1-trg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::run_pipeline_stage appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Hello. </b></p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">MAX_REPOS_AT_ONCE</span><span class="plain"> 8</span>
</pre>
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">text_literal_holder</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">definition_code</span><span class="plain">;</span>
@ -54,38 +66,15 @@
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">the_quartet_found</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="plain">#</span><span class="identifier">endif</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::to_I6</span><span class="plain">(</span><span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</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="functiontext">CodeGen::generate</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">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">;</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain"> = </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;text_out_file</span><span class="plain">;</span>
<span class="reserved">if</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">internal_error</span><span class="plain">(</span><span class="string">"no inter to generate from"</span><span class="plain">);</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">repos</span><span class="plain">[</span><span class="constant">MAX_REPOS_AT_ONCE</span><span class="plain">];</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_repos</span><span class="plain"> = </span><span class="functiontext">CodeGen::repo_list</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">repos</span><span class="plain">);</span>
<span class="functiontext">CodeGen::Var::set_translates</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">j</span><span class="plain">=0; </span><span class="identifier">j</span><span class="plain">&lt;</span><span class="identifier">no_repos</span><span class="plain">; </span><span class="identifier">j</span><span class="plain">++) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">repos</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">];</span>
<span class="identifier">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">LOOP_THROUGH_FRAMES</span><span class="plain">(</span><span class="identifier">P</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">P</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">ID_IFLD</span><span class="plain">] == </span><span class="identifier">IMPORT_IST</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">imp_name</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">SYMBOL_IMPORT_IFLD</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">exp_name</span><span class="plain"> = </span><span class="identifier">Inter::Symbols::get_bridge</span><span class="plain">(</span><span class="identifier">imp_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">exp_name</span><span class="plain">) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">repo</span><span class="plain"> = </span><span class="identifier">Inter::Symbols::defining_frame</span><span class="plain">(</span><span class="identifier">exp_name</span><span class="plain">).</span><span class="identifier">repo_segment</span><span class="plain">-&gt;</span><span class="identifier">owning_repo</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">found</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">no_repos</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">repos</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] == </span><span class="identifier">repo</span><span class="plain">) </span><span class="identifier">found</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">found</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_repos</span><span class="plain"> &gt;= </span><span class="constant">MAX_REPOS_AT_ONCE</span><span class="plain">)</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"too many repos to import"</span><span class="plain">);</span>
<span class="identifier">repos</span><span class="plain">[</span><span class="identifier">no_repos</span><span class="plain">++] = </span><span class="identifier">repo</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</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">j</span><span class="plain">=0; </span><span class="identifier">j</span><span class="plain">&lt;</span><span class="identifier">no_repos</span><span class="plain">; </span><span class="identifier">j</span><span class="plain">++) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">repos</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">];</span>
<span class="functiontext">CodeGen::Var::set_translates</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Generating I6 from %d repository/ies\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">no_repos</span><span class="plain">);</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Generating to %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;target_argument</span><span class="plain">-</span><span class="element">&gt;target_name</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::clear_transient_flags</span><span class="plain">();</span>
@ -98,11 +87,10 @@
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">code_at_eof</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">verbs_at_eof</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">routines_at_eof</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text_literals_code</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">properties_written</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">variables_written</span><span class="plain"> = </span><span class="identifier">FALSE</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">j</span><span class="plain">=0; </span><span class="identifier">j</span><span class="plain">&lt;</span><span class="identifier">no_repos</span><span class="plain">; </span><span class="identifier">j</span><span class="plain">++) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">repos</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">];</span>
<span class="identifier">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">LOOP_THROUGH_FRAMES</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">) {</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">outer</span><span class="plain"> = </span><span class="identifier">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
@ -112,13 +100,10 @@
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CONSTANT_IST</span><span class="plain">: {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> =</span>
<span class="identifier">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">DEFN_CONST_IFLD</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">outer</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">CodeGen::Eliminate::gone</span><span class="plain">(</span><span class="identifier">outer</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">)) &amp;&amp; (</span><span class="identifier">Inter::Constant::code_block</span><span class="plain">(</span><span class="identifier">con_name</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">"Yeah, so reject $3\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">outer</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="reserved">continue</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">outer</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">CodeGen::Eliminate::gone</span><span class="plain">(</span><span class="identifier">outer</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">)) &amp;&amp; (</span><span class="identifier">Inter::Constant::code_block</span><span class="plain">(</span><span class="identifier">con_name</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">"Yeah, so reject $3\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">outer</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="reserved">continue</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">, </span><span class="identifier">OBJECT_IANN</span><span class="plain">) == 1) </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">) == </span><span class="identifier">Inter::Packages::main</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">)) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"Bad constant: %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">);</span>
@ -152,65 +137,27 @@
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"top-level splat remaining"</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">PROPERTYVALUE_IST</span><span class="plain">:</span>
&lt;<span class="cwebmacro">Property knowledge</span> <span class="cwebmacronumber">2.1</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Property knowledge</span> <span class="cwebmacronumber">2.3</span>&gt;<span class="plain">;</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">VARIABLE_IST</span><span class="plain">:</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">outer</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">CodeGen::Eliminate::gone</span><span class="plain">(</span><span class="identifier">outer</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">))) {</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Yeah, so reject $3\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">outer</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="reserved">continue</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">outer</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">CodeGen::Eliminate::gone</span><span class="plain">(</span><span class="identifier">outer</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">))) {</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Yeah, so reject $3\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">outer</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="reserved">continue</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">variables_written</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">variables_written</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="functiontext">CodeGen::Var::knowledge</span><span class="plain">(</span><span class="identifier">TO</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">IMPORT_IST</span><span class="plain">: {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">imp_name</span><span class="plain"> =</span>
<span class="identifier">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">SYMBOL_IMPORT_IFLD</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">exp_name</span><span class="plain"> = </span><span class="identifier">Inter::Symbols::get_bridge</span><span class="plain">(</span><span class="identifier">imp_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">exp_name</span><span class="plain">) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">early_matter</span><span class="plain">, </span><span class="string">"Constant %S = %S;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="functiontext">CodeGen::name</span><span class="plain">(</span><span class="identifier">imp_name</span><span class="plain">), </span><span class="functiontext">CodeGen::name</span><span class="plain">(</span><span class="identifier">exp_name</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">NR</span><span class="plain"> = 0;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">j</span><span class="plain">=0; </span><span class="identifier">j</span><span class="plain">&lt;</span><span class="identifier">no_repos</span><span class="plain">; </span><span class="identifier">j</span><span class="plain">++) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">repos</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">];</span>
<span class="identifier">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">LOOP_THROUGH_FRAMES</span><span class="plain">(</span><span class="identifier">P</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">P</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">ID_IFLD</span><span class="plain">] == </span><span class="identifier">RESPONSE_IST</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">resp_name</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">DEFN_RESPONSE_IFLD</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">early_matter</span><span class="plain">, </span><span class="string">"Constant %S = %d;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="functiontext">CodeGen::name</span><span class="plain">(</span><span class="identifier">resp_name</span><span class="plain">), ++</span><span class="identifier">NR</span><span class="plain">);</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">NR</span><span class="plain"> &gt; 0) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">early_matter</span><span class="plain">, </span><span class="string">"Constant NO_RESPONSES = %d;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">NR</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">main_matter</span><span class="plain">, </span><span class="string">"Array ResponseTexts --&gt; "</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">j</span><span class="plain">=0; </span><span class="identifier">j</span><span class="plain">&lt;</span><span class="identifier">no_repos</span><span class="plain">; </span><span class="identifier">j</span><span class="plain">++) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">repos</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">];</span>
<span class="identifier">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">LOOP_THROUGH_FRAMES</span><span class="plain">(</span><span class="identifier">P</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">P</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">ID_IFLD</span><span class="plain">] == </span><span class="identifier">RESPONSE_IST</span><span class="plain">) {</span>
<span class="identifier">NR</span><span class="plain">++;</span>
<span class="functiontext">CodeGen::literal</span><span class="plain">(</span><span class="identifier">main_matter</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">Inter::Packages::scope_of</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="identifier">data</span><span class="plain">[</span><span class="identifier">VAL1_RESPONSE_IFLD</span><span class="plain">], </span><span class="identifier">P</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">VAL1_RESPONSE_IFLD</span><span class="plain">+1], </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">main_matter</span><span class="plain">, </span><span class="string">" "</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">main_matter</span><span class="plain">, </span><span class="string">"0 0;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
<span class="plain">}</span>
&lt;<span class="cwebmacro">Define constants for the responses</span> <span class="cwebmacronumber">2.1</span>&gt;<span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NR</span><span class="plain"> &gt; 0) </span>&lt;<span class="cwebmacro">Define an array of the responses</span> <span class="cwebmacronumber">2.2</span>&gt;<span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">properties_written</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) { </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">TO</span><span class="plain"> = </span><span class="identifier">main_matter</span><span class="plain">; </span>&lt;<span class="cwebmacro">Property knowledge</span> <span class="cwebmacronumber">2.1</span>&gt;<span class="plain">; }</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">pragmatic_matter</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">attributes_at_eof</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">early_matter</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">properties_written</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) { </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">TO</span><span class="plain"> = </span><span class="identifier">main_matter</span><span class="plain">; </span>&lt;<span class="cwebmacro">Property knowledge</span> <span class="cwebmacronumber">2.3</span>&gt;<span class="plain">; }</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_tlh</span><span class="plain"> = </span><span class="identifier">NUMBER_CREATED</span><span class="plain">(</span><span class="reserved">text_literal_holder</span><span class="plain">);</span>
<span class="reserved">text_literal_holder</span><span class="plain"> **</span><span class="identifier">sorted</span><span class="plain"> = (</span><span class="reserved">text_literal_holder</span><span class="plain"> **)</span>
@ -223,13 +170,16 @@
<span class="functiontext">CodeGen::compare_tlh</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">no_tlh</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">text_literal_holder</span><span class="plain"> *</span><span class="identifier">tlh</span><span class="plain"> = </span><span class="identifier">sorted</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"! TLH %d &lt;%S&gt;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-&gt;</span><span class="identifier">allocation_id</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-</span><span class="element">&gt;literal_content</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-</span><span class="element">&gt;definition_code</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">text_literals_code</span><span class="plain">, </span><span class="string">"! TLH %d &lt;%S&gt;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-&gt;</span><span class="identifier">allocation_id</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-</span><span class="element">&gt;literal_content</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">text_literals_code</span><span class="plain">, </span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-</span><span class="element">&gt;definition_code</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">pragmatic_matter</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">attributes_at_eof</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">early_matter</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">text_literals_code</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">summations_at_eof</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">arrays_at_eof</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">main_matter</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">routines_at_eof</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">code_at_eof</span><span class="plain">);</span>
@ -239,12 +189,54 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::to_I6 is used in <a href="#SP1">&#167;1</a>.</p>
<p class="endnote">The function CodeGen::generate is used in <a href="#SP1">&#167;1</a>.</p>
<p class="endnote">The structure text_literal_holder is private to this section.</p>
<p class="inwebparagraph"><a id="SP2_1"></a><b>&#167;2.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Property knowledge</span> <span class="cwebmacronumber">2.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Define constants for the responses</span> <span class="cwebmacronumber">2.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">LOOP_THROUGH_FRAMES</span><span class="plain">(</span><span class="identifier">P</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">P</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">ID_IFLD</span><span class="plain">] == </span><span class="identifier">RESPONSE_IST</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">resp_name</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">DEFN_RESPONSE_IFLD</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">early_matter</span><span class="plain">, </span><span class="string">"Constant %S = %d;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="functiontext">CodeGen::name</span><span class="plain">(</span><span class="identifier">resp_name</span><span class="plain">), ++</span><span class="identifier">NR</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_2"></a><b>&#167;2.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Define an array of the responses</span> <span class="cwebmacronumber">2.2</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">early_matter</span><span class="plain">, </span><span class="string">"Constant NO_RESPONSES = %d;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">NR</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">main_matter</span><span class="plain">, </span><span class="string">"Array ResponseTexts --&gt; "</span><span class="plain">);</span>
<span class="identifier">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">LOOP_THROUGH_FRAMES</span><span class="plain">(</span><span class="identifier">P</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">P</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">ID_IFLD</span><span class="plain">] == </span><span class="identifier">RESPONSE_IST</span><span class="plain">) {</span>
<span class="identifier">NR</span><span class="plain">++;</span>
<span class="functiontext">CodeGen::literal</span><span class="plain">(</span><span class="identifier">main_matter</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">Inter::Packages::scope_of</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="identifier">data</span><span class="plain">[</span><span class="identifier">VAL1_RESPONSE_IFLD</span><span class="plain">], </span><span class="identifier">P</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">VAL1_RESPONSE_IFLD</span><span class="plain">+1], </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">main_matter</span><span class="plain">, </span><span class="string">" "</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">main_matter</span><span class="plain">, </span><span class="string">"0 0;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_3"></a><b>&#167;2.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Property knowledge</span> <span class="cwebmacronumber">2.3</span>&gt; =
</code></p>
@ -269,37 +261,6 @@
<pre class="display">
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::repo_list</span><span class="plain">(</span><span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">inter_repository</span><span class="plain"> **</span><span class="identifier">repos</span><span class="plain">) {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_repos</span><span class="plain"> = 0;</span>
<span class="identifier">repos</span><span class="plain">[</span><span class="identifier">no_repos</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">j</span><span class="plain">=0; </span><span class="identifier">j</span><span class="plain">&lt;</span><span class="identifier">no_repos</span><span class="plain">; </span><span class="identifier">j</span><span class="plain">++) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">J</span><span class="plain"> = </span><span class="identifier">repos</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">];</span>
<span class="identifier">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">LOOP_THROUGH_FRAMES</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">J</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">data</span><span class="plain">[</span><span class="identifier">ID_IFLD</span><span class="plain">] == </span><span class="identifier">IMPORT_IST</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">imp_name</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">SYMBOL_IMPORT_IFLD</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">exp_name</span><span class="plain"> = </span><span class="identifier">Inter::Symbols::get_bridge</span><span class="plain">(</span><span class="identifier">imp_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">exp_name</span><span class="plain">) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">repo</span><span class="plain"> = </span><span class="identifier">Inter::Symbols::defining_frame</span><span class="plain">(</span><span class="identifier">exp_name</span><span class="plain">).</span><span class="identifier">repo_segment</span><span class="plain">-&gt;</span><span class="identifier">owning_repo</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">found</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">no_repos</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">repos</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] == </span><span class="identifier">repo</span><span class="plain">) </span><span class="identifier">found</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">found</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_repos</span><span class="plain"> &gt;= </span><span class="constant">MAX_REPOS_AT_ONCE</span><span class="plain">)</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"too many repos to import"</span><span class="plain">);</span>
<span class="identifier">repos</span><span class="plain">[</span><span class="identifier">no_repos</span><span class="plain">++] = </span><span class="identifier">repo</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</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">j</span><span class="plain">=0; </span><span class="identifier">j</span><span class="plain">&lt;</span><span class="identifier">no_repos</span><span class="plain">; </span><span class="identifier">j</span><span class="plain">++) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">J</span><span class="plain"> = </span><span class="identifier">repos</span><span class="plain">[</span><span class="identifier">j</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">J</span><span class="plain"> != </span><span class="identifier">I</span><span class="plain">) </span><span class="identifier">J</span><span class="plain">-&gt;</span><span class="identifier">main_repo</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">no_repos</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">query_labels_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">negate_label_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::frame</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">) {</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">ID_IFLD</span><span class="plain">]) {</span>
@ -329,8 +290,6 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::repo_list is used in <a href="#SP2">&#167;2</a>.</p>
<p class="endnote">The function CodeGen::frame is used in <a href="#SP2">&#167;2</a>, <a href="#SP4">&#167;4</a>, <a href="#SP5">&#167;5</a>, <a href="#SP5_1">&#167;5.1</a>, <a href="#SP5_2">&#167;5.2</a>, <a href="#SP5_4">&#167;5.4</a>, <a href="#SP5_5">&#167;5.5</a>, <a href="#SP5_8">&#167;5.8</a>, <a href="#SP5_9">&#167;5.9</a>, <a href="#SP5_10">&#167;5.10</a>, <a href="#SP5_11">&#167;5.11</a>, <a href="#SP5_12">&#167;5.12</a>, <a href="#SP5_13">&#167;5.13</a>, <a href="#SP5_14">&#167;5.14</a>, <a href="#SP5_15">&#167;5.15</a>, <a href="#SP5_16">&#167;5.16</a>, <a href="#SP5_17">&#167;5.17</a>, <a href="#SP5_18">&#167;5.18</a>, <a href="#SP5_19">&#167;5.19</a>, <a href="#SP5_20">&#167;5.20</a>, <a href="#SP5_21">&#167;5.21</a>, <a href="#SP5_22">&#167;5.22</a>, <a href="#SP5_23">&#167;5.23</a>, <a href="#SP5_24">&#167;5.24</a>, <a href="#SP5_25">&#167;5.25</a>, <a href="#SP5_26">&#167;5.26</a>, <a href="#SP5_27">&#167;5.27</a>, <a href="#SP5_28">&#167;5.28</a>, <a href="#SP5_29">&#167;5.29</a>, <a href="#SP5_30">&#167;5.30</a>, <a href="#SP5_31">&#167;5.31</a>, <a href="#SP5_32">&#167;5.32</a>, <a href="#SP5_33">&#167;5.33</a>, <a href="#SP5_34">&#167;5.34</a>, <a href="#SP5_35">&#167;5.35</a>, <a href="#SP5_36">&#167;5.36</a>, <a href="#SP5_37">&#167;5.37</a>, <a href="#SP5_38">&#167;5.38</a>, <a href="#SP5_39">&#167;5.39</a>, <a href="#SP5_40">&#167;5.40</a>, <a href="#SP5_45">&#167;5.45</a>, <a href="#SP5_46">&#167;5.46</a>, <a href="#SP5_47">&#167;5.47</a>, <a href="#SP5_48">&#167;5.48</a>, <a href="#SP5_49">&#167;5.49</a>, <a href="#SP5_50">&#167;5.50</a>, <a href="#SP5_51">&#167;5.51</a>, <a href="#SP5_52">&#167;5.52</a>, <a href="#SP5_53">&#167;5.53</a>, <a href="#SP5_54">&#167;5.54</a>, <a href="#SP5_55">&#167;5.55</a>, <a href="#SP5_56">&#167;5.56</a>, <a href="#SP5_57">&#167;5.57</a>, <a href="#SP5_58">&#167;5.58</a>, <a href="#SP5_59">&#167;5.59</a>, <a href="#SP5_60">&#167;5.60</a>, <a href="#SP5_61">&#167;5.61</a>, <a href="#SP5_62">&#167;5.62</a>, <a href="#SP5_63">&#167;5.63</a>, <a href="#SP5_64">&#167;5.64</a>, <a href="#SP5_65">&#167;5.65</a>, <a href="#SP5_66">&#167;5.66</a>, <a href="#SP5_67">&#167;5.67</a>, <a href="#SP5_68">&#167;5.68</a>, <a href="#SP5_69">&#167;5.69</a>, <a href="#SP5_70">&#167;5.70</a>, <a href="#SP5_71">&#167;5.71</a>, <a href="#SP5_72">&#167;5.72</a>, <a href="#SP5_73">&#167;5.73</a>, <a href="#SP5_74">&#167;5.74</a>, <a href="#SP5_75">&#167;5.75</a>, <a href="#SP5_76">&#167;5.76</a>, <a href="#SP5_77">&#167;5.77</a>, <a href="#SP5_78">&#167;5.78</a>, <a href="#SP5_79">&#167;5.79</a>, <a href="#SP5_80">&#167;5.80</a>, <a href="#SP5_81">&#167;5.81</a>, <a href="#SP5_82">&#167;5.82</a>, <a href="#SP5_83">&#167;5.83</a>, <a href="#SP5_84">&#167;5.84</a>, <a href="#SP5_85">&#167;5.85</a>, <a href="#SP5_86">&#167;5.86</a>, <a href="#SP5_87">&#167;5.87</a>, <a href="#SP5_88">&#167;5.88</a>, <a href="#SP5_89">&#167;5.89</a>, <a href="#SP5_90">&#167;5.90</a>, <a href="#SP5_91">&#167;5.91</a>, <a href="#SP5_92">&#167;5.92</a>, <a href="#SP5_93">&#167;5.93</a>, <a href="#SP5_94">&#167;5.94</a>, <a href="#SP5_95">&#167;5.95</a>, <a href="#SP5_96">&#167;5.96</a>, <a href="#SP5_97">&#167;5.97</a>, <a href="#SP5_98">&#167;5.98</a>, <a href="#SP5_99">&#167;5.99</a>, <a href="#SP5_100">&#167;5.100</a>, <a href="#SP5_101">&#167;5.101</a>, <a href="#SP5_102">&#167;5.102</a>, <a href="#SP5_103">&#167;5.103</a>, <a href="#SP5_104">&#167;5.104</a>, <a href="#SP5_105">&#167;5.105</a>, <a href="#SP5_106">&#167;5.106</a>, <a href="#SP5_107">&#167;5.107</a>, <a href="#SP5_108">&#167;5.108</a>, <a href="#SP5_109">&#167;5.109</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>There's a contrivance here to get around an awkward point of I6 syntax:
@ -592,7 +551,7 @@ is 20. We instead compile this as
<p class="endnote">The function CodeGen::constant is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The function CodeGen::literal is used in <a href="#SP2">&#167;2</a>, <a href="#SP5">&#167;5</a>, 4/iap (<a href="4-iap.html#SP4_8_4_1_1">&#167;4.8.4.1.1</a>, <a href="4-iap.html#SP6">&#167;6</a>), 4/vrb (<a href="4-vrb.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function CodeGen::literal is used in <a href="#SP2_2">&#167;2.2</a>, <a href="#SP5">&#167;5</a>, 4/iap (<a href="4-iap.html#SP4_8_4_1_1">&#167;4.8.4.1.1</a>, <a href="4-iap.html#SP6">&#167;6</a>), 4/vrb (<a href="4-vrb.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function CodeGen::pragma is used in <a href="#SP3">&#167;3</a>.</p>
@ -3039,7 +2998,7 @@ then the result.
<p class="endnote">The function CodeGen::append is used in 4/iap (<a href="4-iap.html#SP4_9">&#167;4.9</a>, <a href="4-iap.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function CodeGen::name is used in <a href="#SP2">&#167;2</a>, <a href="#SP4">&#167;4</a>, <a href="#SP5">&#167;5</a>, 4/iap (<a href="4-iap.html#SP3_5">&#167;3.5</a>, <a href="4-iap.html#SP3_6">&#167;3.6</a>, <a href="4-iap.html#SP4_5">&#167;4.5</a>, <a href="4-iap.html#SP4_7">&#167;4.7</a>, <a href="4-iap.html#SP4_8_4">&#167;4.8.4</a>, <a href="4-iap.html#SP4_9">&#167;4.9</a>, <a href="4-iap.html#SP4_11">&#167;4.11</a>, <a href="4-iap.html#SP4_11_2">&#167;4.11.2</a>, <a href="4-iap.html#SP4_11_2_1">&#167;4.11.2.1</a>, <a href="4-iap.html#SP4_11_2_2">&#167;4.11.2.2</a>, <a href="4-iap.html#SP4_12">&#167;4.12</a>, <a href="4-iap.html#SP5">&#167;5</a>, <a href="4-iap.html#SP6">&#167;6</a>), 4/vrb (<a href="4-vrb.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function CodeGen::name is used in <a href="#SP2_1">&#167;2.1</a>, <a href="#SP4">&#167;4</a>, <a href="#SP5">&#167;5</a>, 4/iap (<a href="4-iap.html#SP3_5">&#167;3.5</a>, <a href="4-iap.html#SP3_6">&#167;3.6</a>, <a href="4-iap.html#SP4_5">&#167;4.5</a>, <a href="4-iap.html#SP4_7">&#167;4.7</a>, <a href="4-iap.html#SP4_8_4">&#167;4.8.4</a>, <a href="4-iap.html#SP4_9">&#167;4.9</a>, <a href="4-iap.html#SP4_11">&#167;4.11</a>, <a href="4-iap.html#SP4_11_2">&#167;4.11.2</a>, <a href="4-iap.html#SP4_11_2_1">&#167;4.11.2.1</a>, <a href="4-iap.html#SP4_11_2_2">&#167;4.11.2.2</a>, <a href="4-iap.html#SP4_12">&#167;4.12</a>, <a href="4-iap.html#SP5">&#167;5</a>, <a href="4-iap.html#SP6">&#167;6</a>), 4/vrb (<a href="4-vrb.html#SP1">&#167;1</a>).</p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. </b></p>

View file

@ -361,7 +361,7 @@ above has been tried on all properties:
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::IP::knowledge is used in 4/cg (<a href="4-cg.html#SP2_1">&#167;2.1</a>).</p>
<p class="endnote">The function CodeGen::IP::knowledge is used in 4/cg (<a href="4-cg.html#SP2_3">&#167;2.3</a>).</p>
<p class="inwebparagraph"><a id="SP4_1"></a><b>&#167;4.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Make a list of properties in source order</span> <span class="cwebmacronumber">4.1</span>&gt; =

View file

@ -23,6 +23,10 @@
<p><a href="1-stg.html"><spon class="sectiontitle">Stages</span></a> -
<span class="purpose">To create the stages through which code generation proceeds.</span></p>
</li>
<li>
<p><a href="1-trg.html"><spon class="sectiontitle">Targets</span></a> -
<span class="purpose">To create the range of possible targets into which Inter can be converted.</span></p>
</li>
<li>
<p><a href="1-ppl.html"><spon class="sectiontitle">Pipelines</span></a> -
<span class="purpose">To build and run through pipelines of code generation stages.</span></p>
@ -33,10 +37,6 @@
<p><a name="2"></a><spon class="chaptertitle">Chapter 2: Linking</span></p>
<p><span class="purpose"></span></p>
<ul class="sectionlist">
<li>
<p><a href="2-imp.html"><spon class="sectiontitle">Import</span></a> -
<span class="purpose">To import inter from a secondary file.</span></p>
</li>
<li>
<p><a href="2-lnk.html"><spon class="sectiontitle">Linker</span></a> -
<span class="purpose">To link inter from I7 with template code.</span></p>

View file

@ -87,7 +87,6 @@ Inform 6 code is complete.
<pre class="display">
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">report_clock_time</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">time_t</span><span class="plain"> </span><span class="identifier">right_now</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">export_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">import_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">inter_processing_chain</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">path_to_inform7</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
@ -139,8 +138,7 @@ Inform 6 code is complete.
<pre class="displaydefn">
<span class="identifier">Errors::set_internal_handler</span><span class="plain">(&amp;</span><span class="identifier">Problems::Issue::internal_error_fn</span><span class="plain">);</span>
<span class="identifier">story_filename_extension</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"ulx"</span><span class="plain">;</span>
<span class="identifier">inter_processing_chain</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"link:Output.i6t,parse-linked-matter,resolve-conditional-compilation,assimilate,make-identifiers-unique,resolve-external-symbols,reconcile-verbs,generate-i6:*"</span><span class="plain">;</span>
<span class="functiontext">CoreMain::set_inter_chain_modes</span><span class="plain">();</span>
<span class="identifier">inter_processing_chain</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"link: Output.i6t, parse-linked-matter, resolve-conditional-compilation, assimilate, make-identifiers-unique, resolve-external-symbols, reconcile-verbs, generate: inform6 -&gt; *"</span><span class="plain">;</span>
<span class="identifier">PRINT</span><span class="plain">(</span><span class="string">"%B build %B has started.\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
<span class="identifier">STREAM_FLUSH</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">);</span>
@ -174,8 +172,6 @@ list is not exhaustive.
<span class="definitionkeyword">enum</span> <span class="constant">SIGILS_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">TRANSIENT_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">INTER_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">IMPORT_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">EXPORT_CLSW</span>
</pre>
<p class="inwebparagraph"><a id="SP4_3"></a><b>&#167;4.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register command-line arguments</span> <span class="cwebmacronumber">4.3</span>&gt; =
@ -213,10 +209,6 @@ list is not exhaustive.
<span class="identifier">L</span><span class="string">"return 0 unless exactly this Problem message is generated (for testing)"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">INTER_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"inter"</span><span class="plain">, 2,</span>
<span class="identifier">L</span><span class="string">"specify code-generation chain for inter code"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">IMPORT_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"import"</span><span class="plain">, 2,</span>
<span class="identifier">L</span><span class="string">"import Standard Rules as module (experimental)"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">EXPORT_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"export"</span><span class="plain">, 2,</span>
<span class="identifier">L</span><span class="string">"export Standard Rules as module (experimental)"</span><span class="plain">);</span>
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">PROJECT_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"project"</span><span class="plain">, 2,</span>
<span class="identifier">L</span><span class="string">"work within the Inform project X"</span><span class="plain">);</span>
@ -559,7 +551,6 @@ list is not exhaustive.
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Showme::compile_SHOWME_details</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Showme::compile_SHOWME_details"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Timed::TimedEventsTable</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Timed::TimedEventsTable"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Timed::TimedEventTimesTable</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Timed::TimedEventTimesTable"</span><span class="plain">)</span>
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Rules::export_named_rules</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Rules::export_named_rules"</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
@ -578,12 +569,6 @@ list is not exhaustive.
<span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Converting inter to Inform 6"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">existing_story_file</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">codegen_pipeline</span><span class="plain"> *</span><span class="identifier">SS</span><span class="plain"> = </span><span class="identifier">CodeGen::Pipeline::new</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">import_mode</span><span class="plain">) &amp;&amp; (</span><span class="identifier">filename_of_SR_module</span><span class="plain">))</span>
<span class="identifier">CodeGen::Pipeline::parse_into</span><span class="plain">(</span><span class="identifier">SS</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"import:*"</span><span class="plain">,</span>
<span class="identifier">Filenames::get_leafname</span><span class="plain">(</span><span class="identifier">filename_of_SR_module</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">export_mode</span><span class="plain">) &amp;&amp; (</span><span class="identifier">filename_of_SR_module</span><span class="plain">))</span>
<span class="identifier">CodeGen::Pipeline::parse_into</span><span class="plain">(</span><span class="identifier">SS</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"export:*"</span><span class="plain">,</span>
<span class="identifier">Filenames::get_leafname</span><span class="plain">(</span><span class="identifier">filename_of_SR_module</span><span class="plain">));</span>
<span class="identifier">CodeGen::Pipeline::parse_into</span><span class="plain">(</span><span class="identifier">SS</span><span class="plain">, </span><span class="identifier">inter_processing_chain</span><span class="plain">,</span>
<span class="identifier">Filenames::get_leafname</span><span class="plain">(</span><span class="identifier">filename_of_compiled_i6_code</span><span class="plain">));</span>
<span class="identifier">CodeGen::Pipeline::run</span><span class="plain">(</span><span class="identifier">Filenames::get_path_to</span><span class="plain">(</span><span class="identifier">filename_of_compiled_i6_code</span><span class="plain">),</span>
@ -715,8 +700,6 @@ list is not exhaustive.
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INTERNAL_CLSW</span><span class="plain">: </span><span class="functiontext">Locations::set_internal</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EXTERNAL_CLSW</span><span class="plain">: </span><span class="functiontext">Locations::set_external</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TRANSIENT_CLSW</span><span class="plain">: </span><span class="functiontext">Locations::set_transient</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">IMPORT_CLSW</span><span class="plain">: </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">disable_import</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) { </span><span class="identifier">import_mode</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span><span class="functiontext">Locations::set_SR_module</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); } </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EXPORT_CLSW</span><span class="plain">: </span><span class="identifier">export_mode</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span><span class="functiontext">Locations::set_SR_module</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unimplemented switch"</span><span class="plain">);</span>
<span class="plain">}</span>
@ -729,7 +712,6 @@ list is not exhaustive.
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreMain::disable_importation</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">disable_import</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="identifier">import_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreMain::set_inter_chain</span><span class="plain">(</span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
@ -738,14 +720,6 @@ list is not exhaustive.
<span class="identifier">Str::delete_first_character</span><span class="plain">(</span><span class="identifier">inter_processing_chain</span><span class="plain">);</span>
<span class="identifier">Str::delete_last_character</span><span class="plain">(</span><span class="identifier">inter_processing_chain</span><span class="plain">);</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Setting chain %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">inter_processing_chain</span><span class="plain">);</span>
<span class="functiontext">CoreMain::set_inter_chain_modes</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreMain::set_inter_chain_modes</span><span class="plain">() {</span>
<span class="identifier">import_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span><span class="identifier">export_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">codegen_pipeline</span><span class="plain"> *</span><span class="identifier">pipeline</span><span class="plain"> = </span><span class="identifier">CodeGen::Pipeline::parse</span><span class="plain">(</span><span class="identifier">inter_processing_chain</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"nowhere"</span><span class="plain">);</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">port</span><span class="plain"> = </span><span class="identifier">CodeGen::Pipeline::port_direction</span><span class="plain">(</span><span class="identifier">pipeline</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">port</span><span class="plain"> == 1) </span><span class="identifier">export_mode</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">port</span><span class="plain"> == -1) &amp;&amp; (</span><span class="identifier">disable_import</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) </span><span class="identifier">import_mode</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
@ -759,8 +733,6 @@ list is not exhaustive.
<p class="endnote">The function CoreMain::set_inter_chain is used in 26/uo (<a href="26-uo.html#SP11_2">&#167;11.2</a>).</p>
<p class="endnote">The function CoreMain::set_inter_chain_modes is used in <a href="#SP4_1">&#167;4.1</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 1: Configuration and Control.)</i></li><li><a href="1-cm.html">Continue with 'Core Module'</a></li></ul><hr class="tocbar">
<!--End of weave-->

View file

@ -155,7 +155,7 @@ not here. First, some "areas":
<p class="endnote">The function Locations::set_I7_source is used in 1/mr (<a href="1-mr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Locations::set_SR_module is used in 1/mr (<a href="1-mr.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Locations::set_SR_module appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Establishing the defaults. </b>Inform's file access happens inside four different areas: the internal
resources area, usually inside the Inform application; the external resources

View file

@ -565,7 +565,7 @@ constants, and use the Link constants to progress; we stop at <code class="displ
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">PL::Counting::optimise_loop</span><span class="plain">(</span><span class="reserved">i6_schema</span><span class="plain"> *</span><span class="identifier">sch</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Plugins::Manage::plugged_in</span><span class="plain">(</span><span class="identifier">counting_plugin</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">FALSE</span><span class="plain">;</span>
<span class="reserved">inference_subject</span><span class="plain"> *</span><span class="identifier">subj</span><span class="plain"> = </span><span class="functiontext">Kinds::Knowledge::as_subject</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">export_mode</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) &amp;&amp; (</span><span class="identifier">PF_S</span><span class="plain">(</span><span class="identifier">counting</span><span class="plain">, </span><span class="identifier">subj</span><span class="plain">)-</span><span class="element">&gt;has_instances</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) </span> <span class="comment">(to avoid writing misleading code)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">PF_S</span><span class="plain">(</span><span class="identifier">counting</span><span class="plain">, </span><span class="identifier">subj</span><span class="plain">)-</span><span class="element">&gt;has_instances</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span> <span class="comment">(to avoid writing misleading code)</span>
<span class="functiontext">Calculus::Schemas::modify</span><span class="plain">(</span><span class="identifier">sch</span><span class="plain">,</span>
<span class="string">"for (*1=nothing: false: )"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> {</span>

View file

@ -747,7 +747,7 @@ do.
<p class="endnote">The function Rules::shell_iname is used in <a href="#SP22_1">&#167;22.1</a>.</p>
<p class="endnote">The function Rules::iname is used in <a href="#SP11_2">&#167;11.2</a>, <a href="#SP20_2">&#167;20.2</a>, <a href="#SP20_2_1">&#167;20.2.1</a>, <a href="#SP22">&#167;22</a>, <a href="#SP26">&#167;26</a>, 14/rv (<a href="14-rv.html#SP24_3">&#167;24.3</a>), 17/rs (<a href="17-rs.html#SP7_2">&#167;7.2</a>), 27/ei (<a href="27-ei.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Rules::iname is used in <a href="#SP11_2">&#167;11.2</a>, <a href="#SP20_2">&#167;20.2</a>, <a href="#SP20_2_1">&#167;20.2.1</a>, <a href="#SP22">&#167;22</a>, 14/rv (<a href="14-rv.html#SP24_3">&#167;24.3</a>), 17/rs (<a href="17-rs.html#SP7_2">&#167;7.2</a>), 27/ei (<a href="27-ei.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP20"></a><b>&#167;20. Printing rule names at run time. </b></p>
@ -945,14 +945,9 @@ what we compile, of course, is the phrase in question.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;defn_compiled</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;defn_compiled</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="identifier">rule_being_compiled</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;defn_as_phrase</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">import_mode</span><span class="plain">) &amp;&amp; (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;do_not_import</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">Rules::portable</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">))) {</span>
<span class="functiontext">Emit::import</span><span class="plain">(</span><span class="functiontext">Rules::iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="functiontext">Phrases::import</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;defn_as_phrase</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;defn_as_phrase</span><span class="plain">)</span>
<span class="functiontext">Phrases::compile</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;defn_as_phrase</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">max_i</span><span class="plain">,</span>
<span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;listed_stv_owners</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;first_applicability_condition</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_extern_iname</span><span class="plain">) &amp;&amp; (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;first_applicability_condition</span><span class="plain">))</span>
&lt;<span class="cwebmacro">Compile a shell routine to apply conditions to an I6 rule</span> <span class="cwebmacronumber">22.1</span>&gt;<span class="plain">;</span>
<span class="identifier">rule_being_compiled</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
@ -1361,15 +1356,6 @@ I wonder how useful this really is, but it was much requested at one time.
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Rules::export_named_rules</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">export_mode</span><span class="plain">) {</span>
<span class="reserved">rule</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="reserved">rule</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rules::portable</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">))</span>
<span class="functiontext">Emit::export</span><span class="plain">(</span><span class="functiontext">Rules::iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Rules::package</span><span class="plain">(</span><span class="reserved">rule</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;rule_package</span><span class="plain">;</span>
<span class="plain">}</span>
@ -1403,9 +1389,7 @@ I wonder how useful this really is, but it was much requested at one time.
<p class="endnote">The function Rules::stack_frame appears nowhere else.</p>
<p class="endnote">The function Rules::portable is used in <a href="#SP22">&#167;22</a>.</p>
<p class="endnote">The function Rules::export_named_rules is used in 1/mr (<a href="1-mr.html#SP4_14">&#167;4.14</a>).</p>
<p class="endnote">The function Rules::portable appears nowhere else.</p>
<p class="endnote">The function Rules::package is used in 17/rs (<a href="17-rs.html#SP5">&#167;5</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>), 22/pu (<a href="22-pu.html#SP6">&#167;6</a>).</p>

View file

@ -623,7 +623,7 @@ response to "requests". All other phrases are compiled just once.
<p class="inwebparagraph"></p>
<p class="endnote">The function Phrases::import is used in 21/rl (<a href="21-rl.html#SP22">&#167;22</a>).</p>
<p class="endnote">The function Phrases::import appears nowhere else.</p>
<p class="endnote">The function Phrases::compile is used in 21/rl (<a href="21-rl.html#SP22">&#167;22</a>), 22/cs (<a href="22-cs.html#SP10_4">&#167;10.4</a>), 22/tp (<a href="22-tp.html#SP9">&#167;9</a>).</p>

View file

@ -350,7 +350,7 @@ there is no need to translate this to other languages.)
<pre class="displaydefn">
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">CW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(&lt;</span><span class="identifier">use</span><span class="plain">-</span><span class="identifier">inter</span><span class="plain">-</span><span class="identifier">chain</span><span class="plain">&gt;, 1);</span>
<span class="functiontext">CoreMain::set_inter_chain</span><span class="plain">(</span><span class="identifier">CW</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">traverse</span><span class="plain"> == 1) </span><span class="functiontext">CoreMain::set_inter_chain</span><span class="plain">(</span><span class="identifier">CW</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
</pre>

View file

@ -206,20 +206,6 @@ insert them into the Inter stream close to the top.
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::import</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symbol</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="string">"%W"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Import::new</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">(), </span><span class="identifier">symbol</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::export</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symbol</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="string">"%W"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Export::new</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">(), </span><span class="identifier">symbol</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="functiontext">Emit::main_scope</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">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">Inter::Packages::main</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">()));</span>
<span class="plain">}</span>
@ -979,10 +965,6 @@ insert them into the Inter stream close to the top.
<p class="endnote">The function Emit::append is used in 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>).</p>
<p class="endnote">The function Emit::import is used in 21/rl (<a href="21-rl.html#SP22">&#167;22</a>).</p>
<p class="endnote">The function Emit::export is used in 21/rl (<a href="21-rl.html#SP26">&#167;26</a>).</p>
<p class="endnote">The function Emit::main_scope is used in <a href="#SP2">&#167;2</a>, 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>, <a href="13-rsfk.html#SP24">&#167;24</a>), 27/eis (<a href="27-eis.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Emit::global_scope appears nowhere else.</p>

View file

@ -28,7 +28,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The structure inter_reading_state is accessed in 2/iim, 2/st, 2/frm, 3/dfn, 4/tmc, 4/tsc, 4/tic, 4/tec, 4/tpc, 4/tlc, 4/tac, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic2, 4/tpc4, 4/tpc5, 4/tpc6, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tcc, 5/tec, 5/trc2, 5/tcc2, 5/tsc and here.</p>
<p class="endnote">The structure inter_reading_state is accessed in 2/iim, 2/st, 2/frm, 3/dfn, 4/tmc, 4/tsc, 4/tpc, 4/tlc, 4/tac, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic, 4/tpc4, 4/tpc5, 4/tpc6, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tcc, 5/tec, 5/trc2, 5/tcc2, 5/tsc and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
@ -120,7 +120,7 @@
<p class="endnote">The function Inter::Bookmarks::log is used in 1/im (<a href="1-im.html#SP3_6">&#167;3.6</a>).</p>
<p class="endnote">The function Inter::Bookmarks::scope is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Bookmarks::scope is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Bookmarks::package appears nowhere else.</p>

View file

@ -27,7 +27,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The structure inter_frame is accessed in 2/iim, 2/st, 2/pck, 2/sym, 2/bkm, 2/iibf, 2/iitf, 2/vi, 2/idt, 3/dfn, 3/smm, 4/tnc, 4/tmc, 4/tic, 4/tec, 4/tvc, 4/tpc, 4/tlc, 4/tac, 4/tpc2, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic2, 4/tpc4, 4/tpc5, 4/tpc6, 4/tpc7, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tlc3, 5/tcc, 5/tec, 5/trc2, 5/tcc2, 5/tsc and here.</p>
<p class="endnote">The structure inter_frame is accessed in 2/iim, 2/st, 2/pck, 2/sym, 2/bkm, 2/iibf, 2/iitf, 2/vi, 2/idt, 3/dfn, 3/smm, 4/tnc, 4/tmc, 4/tvc, 4/tpc, 4/tlc, 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/tcc, 5/tec, 5/trc2, 5/tcc2, 5/tsc and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
@ -72,7 +72,7 @@
<p class="endnote">The function Inter::Frame::around is used in 2/ie (<a href="2-ie.html#SP1">&#167;1</a>), 2/iim (<a href="2-iim.html#SP3">&#167;3</a>, <a href="2-iim.html#SP4">&#167;4</a>), 2/sym (<a href="2-sym.html#SP2">&#167;2</a>, <a href="2-sym.html#SP4">&#167;4</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Frame::valid is used in <a href="#SP5">&#167;5</a>, 2/iim (<a href="2-iim.html#SP4">&#167;4</a>), 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 2/iitf (<a href="2-iitf.html#SP1">&#167;1</a>), 2/vi (<a href="2-vi.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP2">&#167;2</a>, <a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP3">&#167;3</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::valid is used in <a href="#SP5">&#167;5</a>, 2/iim (<a href="2-iim.html#SP4">&#167;4</a>), 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 2/iitf (<a href="2-iitf.html#SP1">&#167;1</a>), 2/vi (<a href="2-vi.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP2">&#167;2</a>, <a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP3">&#167;3</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::included is used in 2/iim (<a href="2-iim.html#SP4">&#167;4</a>).</p>
@ -188,7 +188,7 @@
<p class="endnote">The function Inter::Frame::fill_1 is used in 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::fill_2 is used in 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::fill_2 is used in 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::fill_3 is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
@ -196,7 +196,7 @@
<p class="endnote">The function Inter::Frame::fill_5 is used in 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::fill_6 is used in 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::fill_6 is used in 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::fill_7 appears nowhere else.</p>
@ -326,13 +326,13 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Frame::insert is used in 2/iibf (<a href="2-iibf.html#SP1_7">&#167;1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::insert is used in 2/iibf (<a href="2-iibf.html#SP1_7">&#167;1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::global_symbols is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Frame::retrieve_origin appears nowhere else.</p>
<p class="endnote">The function Inter::Frame::error is used in 2/vi (<a href="2-vi.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP2">&#167;2</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::error is used in 2/vi (<a href="2-vi.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP2">&#167;2</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Frame::get_comment is used in 2/iibf (<a href="2-iibf.html#SP1_1_5">&#167;1.1.5</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>).</p>

View file

@ -143,7 +143,7 @@
<p class="endnote">The function Inter::Types::create is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">The function Inter::Types::is_enumerated is used in <a href="#SP3">&#167;3</a>, 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Types::is_enumerated is used in <a href="#SP3">&#167;3</a>, 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Types::find_by_ID is used in 2/vi (<a href="2-vi.html#SP1">&#167;1</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>).</p>
@ -344,9 +344,9 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Types::write is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Types::write is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Types::read is used in 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Types::read is used in 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Types::read_I6_decimal appears nowhere else.</p>

View file

@ -106,9 +106,9 @@
<p class="endnote">The function Inter::Errors::interb_location is used in 2/iim (<a href="2-iim.html#SP4">&#167;4</a>), 2/iibf (<a href="2-iibf.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Errors::quoted is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 2/iitf (<a href="2-iitf.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Errors::quoted is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 2/iitf (<a href="2-iitf.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Errors::plain is used in 2/iibf (<a href="2-iibf.html#SP2">&#167;2</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Errors::plain is used in 2/iibf (<a href="2-iibf.html#SP2">&#167;2</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Errors::issue is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 2/iibf (<a href="2-iibf.html#SP1_7">&#167;1.7</a>, <a href="2-iibf.html#SP2">&#167;2</a>), 2/iitf (<a href="2-iitf.html#SP1">&#167;1</a>, <a href="2-iitf.html#SP2">&#167;2</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>).</p>

View file

@ -90,7 +90,7 @@
<p class="endnote">The structure inter_frame_list_entry is accessed in 2/bkm and here.</p>
<p class="endnote">The structure inter_repository_segment is accessed in 2/st, 2/pck, 2/sym, 2/frm, 2/bkm, 2/iibf, 2/vi, 3/dfn, 4/tmc, 4/tic, 4/tec, 4/tpc, 4/tlc, 4/tac, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic2, 4/tpc4, 4/tpc5, 4/tpc6, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tcc, 5/tec, 5/trc2, 5/tcc2, 5/tsc and here.</p>
<p class="endnote">The structure inter_repository_segment is accessed in 2/st, 2/pck, 2/sym, 2/frm, 2/bkm, 2/iibf, 2/vi, 3/dfn, 4/tmc, 4/tpc, 4/tlc, 4/tac, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic, 4/tpc4, 4/tpc5, 4/tpc6, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tcc, 5/tec, 5/trc2, 5/tcc2, 5/tsc and here.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b></p>
@ -309,9 +309,9 @@
<p class="endnote">The function Inter::get_package is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">&#167;1.5.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::create_text is used in 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::create_text is used in 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::get_text is used in 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::get_text is used in 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::create_ref appears nowhere else.</p>
@ -319,7 +319,7 @@
<p class="endnote">The function Inter::set_ref appears nowhere else.</p>
<p class="endnote">The function Inter::create_frame_list is used in 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::create_frame_list is used in 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b></p>

View file

@ -108,9 +108,9 @@
<p class="endnote">The function Inter::Textual::read appears nowhere else.</p>
<p class="endnote">The function Inter::Textual::new_symbol is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Textual::new_symbol is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Textual::find_symbol is used in 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Textual::find_symbol is used in 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Textual::find_undefined_symbol is used in 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>).</p>

View file

@ -214,7 +214,7 @@
<p class="endnote">The function Inter::Packages::scope is used in 2/st (<a href="2-st.html#SP4">&#167;4</a>, <a href="2-st.html#SP5">&#167;5</a>, <a href="2-st.html#SP9">&#167;9</a>, <a href="2-st.html#SP10">&#167;10</a>, <a href="2-st.html#SP11">&#167;11</a>, <a href="2-st.html#SP12">&#167;12</a>), 2/bkm (<a href="2-bkm.html#SP2">&#167;2</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">&#167;1.5.3</a>).</p>
<p class="endnote">The function Inter::Packages::scope_of is used in 2/st (<a href="2-st.html#SP8">&#167;8</a>), 2/vi (<a href="2-vi.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::scope_of is used in 2/st (<a href="2-st.html#SP8">&#167;8</a>), 2/vi (<a href="2-vi.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::type is used in 3/smm (<a href="3-smm.html#SP1">&#167;1</a>).</p>

View file

@ -194,7 +194,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name is used in <a href="#SP5">&#167;5</a>, <a href="#SP6">&#167;6</a>, <a href="#SP12">&#167;12</a>, 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/iitf (<a href="2-iitf.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name is used in <a href="#SP5">&#167;5</a>, <a href="#SP6">&#167;6</a>, <a href="#SP12">&#167;12</a>, 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/iitf (<a href="2-iitf.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_not_equating appears nowhere else.</p>
@ -322,7 +322,7 @@ to access this: one following equations, the other not.
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_frame_data is used in 3/smm (<a href="3-smm.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>, <a href="4-tcc2.html#SP3">&#167;3</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_frame_data is used in 3/smm (<a href="3-smm.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>, <a href="4-tcc2.html#SP3">&#167;3</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::global_symbol_from_frame_data is used in 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
@ -426,7 +426,7 @@ a global symbol in any non-global context.
<p class="endnote">The function Inter::SymbolsTables::id_from_symbol is used in 2/sym (<a href="2-sym.html#SP3">&#167;3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::id_from_IRS_and_symbol is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::id_from_IRS_and_symbol is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Equations. </b></p>

View file

@ -58,7 +58,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The structure inter_symbol is accessed in 2/st, 2/pck, 2/iibf, 2/iitf, 2/vi, 2/idt, 3/dfn, 3/smm, 4/tmc, 4/tmc2, 4/tsc, 4/tic, 4/tec, 4/tpc, 4/tac, 4/tpc2, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic2, 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, 2/pck, 2/iibf, 2/iitf, 2/vi, 2/idt, 3/dfn, 3/smm, 4/tmc, 4/tmc2, 4/tsc, 4/tpc, 4/tac, 4/tpc2, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic, 4/tpc4, 4/tpc5, 4/tpc6, 4/tpc7, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tlc3, 5/tcc2 and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
@ -343,7 +343,7 @@
<p class="endnote">The function Inter::Symbols::define is used in 2/vi (<a href="2-vi.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Symbols::defining_frame is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/iitf (<a href="2-iitf.html#SP1">&#167;1</a>), 2/vi (<a href="2-vi.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP2">&#167;2</a>, <a href="2-idt.html#SP3">&#167;3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP3">&#167;3</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Symbols::defining_frame is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/iitf (<a href="2-iitf.html#SP1">&#167;1</a>), 2/vi (<a href="2-vi.html#SP1">&#167;1</a>), 2/idt (<a href="2-idt.html#SP2">&#167;2</a>, <a href="2-idt.html#SP3">&#167;3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP3">&#167;3</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Symbols::is_defined appears nowhere else.</p>
@ -375,7 +375,7 @@
<p class="endnote">The function Inter::Symbols::get_translate appears nowhere else.</p>
<p class="endnote">The function Inter::Symbols::set_export_name is used in 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Symbols::set_export_name appears nowhere else.</p>
<p class="endnote">The function Inter::Symbols::get_export_name appears nowhere else.</p>
@ -393,7 +393,7 @@
<p class="endnote">The function Inter::Symbols::annotate_t appears nowhere else.</p>
<p class="endnote">The function Inter::Symbols::write_annotations is used in 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Symbols::write_annotations is used in 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b></p>

View file

@ -138,11 +138,11 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Verify::defn is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::defn is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::local_defn is used in 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::symbol is used in 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::symbol is used in 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::global_symbol is used in 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
@ -152,7 +152,7 @@
<p class="endnote">The function Inter::Verify::data_type is used in 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::value is used in 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::value is used in 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Verify::local_value is used in 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>

View file

@ -117,9 +117,9 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Defn::create_construct is used in <a href="#SP3">&#167;3</a>, 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP1">&#167;1</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP1">&#167;1</a>), 4/tlc (<a href="4-tlc.html#SP1">&#167;1</a>), 4/tac (<a href="4-tac.html#SP1">&#167;1</a>), 4/tpc2 (<a href="4-tpc2.html#SP1">&#167;1</a>), 4/tpc3 (<a href="4-tpc3.html#SP1">&#167;1</a>), 4/tkc (<a href="4-tkc.html#SP1">&#167;1</a>), 4/tdc (<a href="4-tdc.html#SP1">&#167;1</a>), 4/tvc2 (<a href="4-tvc2.html#SP1">&#167;1</a>), 4/tcc2 (<a href="4-tcc2.html#SP1">&#167;1</a>), 4/trc (<a href="4-trc.html#SP1">&#167;1</a>), 4/tic2 (<a href="4-tic2.html#SP1">&#167;1</a>), 4/tpc4 (<a href="4-tpc4.html#SP1">&#167;1</a>), 4/tpc5 (<a href="4-tpc5.html#SP1">&#167;1</a>), 4/tpc6 (<a href="4-tpc6.html#SP1">&#167;1</a>), 4/tpc7 (<a href="4-tpc7.html#SP1">&#167;1</a>), 5/tlc (<a href="5-tlc.html#SP1">&#167;1</a>), 5/tlc2 (<a href="5-tlc2.html#SP1">&#167;1</a>), 5/tic (<a href="5-tic.html#SP1">&#167;1</a>), 5/trc (<a href="5-trc.html#SP1">&#167;1</a>), 5/tvc (<a href="5-tvc.html#SP1">&#167;1</a>), 5/tlc3 (<a href="5-tlc3.html#SP1">&#167;1</a>), 5/tcc (<a href="5-tcc.html#SP1">&#167;1</a>), 5/tec (<a href="5-tec.html#SP1">&#167;1</a>), 5/trc2 (<a href="5-trc2.html#SP1">&#167;1</a>), 5/tcc2 (<a href="5-tcc2.html#SP1">&#167;1</a>), 5/tsc (<a href="5-tsc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Defn::create_construct is used in <a href="#SP3">&#167;3</a>, 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP1">&#167;1</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP1">&#167;1</a>), 4/tlc (<a href="4-tlc.html#SP1">&#167;1</a>), 4/tac (<a href="4-tac.html#SP1">&#167;1</a>), 4/tpc2 (<a href="4-tpc2.html#SP1">&#167;1</a>), 4/tpc3 (<a href="4-tpc3.html#SP1">&#167;1</a>), 4/tkc (<a href="4-tkc.html#SP1">&#167;1</a>), 4/tdc (<a href="4-tdc.html#SP1">&#167;1</a>), 4/tvc2 (<a href="4-tvc2.html#SP1">&#167;1</a>), 4/tcc2 (<a href="4-tcc2.html#SP1">&#167;1</a>), 4/trc (<a href="4-trc.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tpc4 (<a href="4-tpc4.html#SP1">&#167;1</a>), 4/tpc5 (<a href="4-tpc5.html#SP1">&#167;1</a>), 4/tpc6 (<a href="4-tpc6.html#SP1">&#167;1</a>), 4/tpc7 (<a href="4-tpc7.html#SP1">&#167;1</a>), 5/tlc (<a href="5-tlc.html#SP1">&#167;1</a>), 5/tlc2 (<a href="5-tlc2.html#SP1">&#167;1</a>), 5/tic (<a href="5-tic.html#SP1">&#167;1</a>), 5/trc (<a href="5-trc.html#SP1">&#167;1</a>), 5/tvc (<a href="5-tvc.html#SP1">&#167;1</a>), 5/tlc3 (<a href="5-tlc3.html#SP1">&#167;1</a>), 5/tcc (<a href="5-tcc.html#SP1">&#167;1</a>), 5/tec (<a href="5-tec.html#SP1">&#167;1</a>), 5/trc2 (<a href="5-trc2.html#SP1">&#167;1</a>), 5/tcc2 (<a href="5-tcc2.html#SP1">&#167;1</a>), 5/tsc (<a href="5-tsc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The structure inter_line_parse is accessed in 4/tcc, 4/tmc, 4/tmc2, 4/tsc, 4/tic, 4/tec, 4/tvc, 4/tpc, 4/tlc, 4/tac, 4/tpc2, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic2, 4/tpc4, 4/tpc5, 4/tpc6, 4/tpc7, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tlc3, 5/tcc, 5/tec, 5/trc2, 5/tcc2, 5/tsc and here.</p>
<p class="endnote">The structure inter_line_parse is accessed in 4/tcc, 4/tmc, 4/tmc2, 4/tsc, 4/tvc, 4/tpc, 4/tlc, 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/tcc, 5/tec, 5/trc2, 5/tcc2, 5/tsc and here.</p>
<p class="endnote">The structure inter_construct is accessed in 3/smm, 4/tnc, 4/tcc, 4/tsc, 4/tvc, 4/tpc, 4/tpc2, 4/tpc3, 4/tpc7, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tlc3, 5/tcc, 5/tec, 5/trc2, 5/tcc2, 5/tsc and here.</p>
@ -146,8 +146,6 @@
<span class="functiontext">Inter::Symbol::define</span><span class="plain">();</span>
<span class="functiontext">Inter::Version::define</span><span class="plain">();</span>
<span class="functiontext">Inter::Pragma::define</span><span class="plain">();</span>
<span class="functiontext">Inter::Import::define</span><span class="plain">();</span>
<span class="functiontext">Inter::Export::define</span><span class="plain">();</span>
<span class="functiontext">Inter::Link::define</span><span class="plain">();</span>
<span class="functiontext">Inter::Append::define</span><span class="plain">();</span>
<span class="functiontext">Inter::Kind::define</span><span class="plain">();</span>
@ -603,7 +601,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Defn::verify_construct is used in 2/iibf (<a href="2-iibf.html#SP1_7">&#167;1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::verify_construct is used in 2/iibf (<a href="2-iibf.html#SP1_7">&#167;1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::get_construct appears nowhere else.</p>
@ -619,7 +617,7 @@
<p class="endnote">The function Inter::Defn::get_latest_block_symbol is used in 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::vet_level is used in 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::vet_level is used in 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::get_level is used in <a href="#SP3">&#167;3</a>, 2/pck (<a href="2-pck.html#SP3">&#167;3</a>).</p>

View file

@ -474,7 +474,7 @@
<p class="endnote">The function Inter::Constant::read is used in <a href="#SP1">&#167;1</a>.</p>
<p class="endnote">The function Inter::Constant::parse_text is used in 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP1">&#167;1</a>), 4/tec (<a href="4-tec.html#SP1">&#167;1</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Constant::parse_text is used in 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Constant::write_text is used in 2/idt (<a href="2-idt.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>4/tsc</title>
<title>4/trc</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
@ -9,98 +9,172 @@
<body>
<!--Weave of '4/tic' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">inter</a></li><li><a href="index.html#4">Chapter 4: Void Constructs</a></li><li><b>The Import Construct</b></li></ul><p class="purpose">Defining the import construct.</p>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">inter</a></li><li><a href="index.html#4">Chapter 4: Void Constructs</a></li><li><b>The Instance Construct</b></li></ul><p class="purpose">Defining the instance construct.</p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b></p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">IMPORT_IST</span>
<span class="definitionkeyword">enum</span> <span class="constant">INSTANCE_IST</span>
</pre>
<pre class="display">
<span class="definitionkeyword">define</span> <span class="constant">SYMBOL_IMPORT_IFLD</span><span class="plain"> 2</span>
<span class="definitionkeyword">define</span> <span class="constant">TEXT_IMPORT_IFLD</span><span class="plain"> 3</span>
<span class="definitionkeyword">define</span> <span class="constant">EXTENT_IMPORT_IFR</span><span class="plain"> 4</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Import::define</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Instance::define</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">Inter::Defn::create_construct</span><span class="plain">(</span>
<span class="constant">IMPORT_IST</span><span class="plain">,</span>
<span class="identifier">L</span><span class="string">"import (%i+) \</span><span class="plain">"</span><span class="string">(%c+)\</span><span class="plain">"</span><span class="string">"</span><span class="plain">,</span>
<span class="plain">&amp;</span><span class="functiontext">Inter::Import::read</span><span class="plain">,</span>
<span class="constant">INSTANCE_IST</span><span class="plain">,</span>
<span class="identifier">L</span><span class="string">"instance (%i+) (%c+)"</span><span class="plain">,</span>
<span class="plain">&amp;</span><span class="functiontext">Inter::Instance::read</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">,</span>
<span class="plain">&amp;</span><span class="functiontext">Inter::Import::verify</span><span class="plain">,</span>
<span class="plain">&amp;</span><span class="functiontext">Inter::Import::write</span><span class="plain">,</span>
<span class="plain">&amp;</span><span class="functiontext">Inter::Instance::verify</span><span class="plain">,</span>
<span class="plain">&amp;</span><span class="functiontext">Inter::Instance::write</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">,</span>
<span class="identifier">NULL</span><span class="plain">,</span>
<span class="identifier">I</span><span class="string">"import"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"imports"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Import::read</span><span class="plain">(</span><span class="reserved">inter_reading_state</span><span class="plain"> *</span><span class="identifier">IRS</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="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="constant">IMPORT_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;no_annotations</span><span class="plain"> &gt; 0) </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">"__annotations are not allowed"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">symbol</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">), </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">symbol</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::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"no such symbol"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">-</span><span class="element">&gt;read_into</span><span class="plain">);</span>
<span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Constant::parse_text</span><span class="plain">(</span><span class="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">-</span><span class="element">&gt;read_into</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1], 0, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]), </span><span class="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="identifier">E</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Import::new</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="identifier">symbol</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Import::new</span><span class="plain">(</span><span class="reserved">inter_reading_state</span><span class="plain"> *</span><span class="identifier">IRS</span><span class="plain">, </span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">symbol</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">translate_text</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">struct</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_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::fill_2</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="constant">IMPORT_IST</span><span class="plain">, </span><span class="functiontext">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="identifier">symbol</span><span class="plain">), </span><span class="identifier">translate_text</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</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="identifier">P</span><span class="plain">); </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
<span class="functiontext">Inter::Frame::insert</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">IRS</span><span class="plain">);</span>
<span class="identifier">symbol</span><span class="plain">-</span><span class="element">&gt;importation_frame</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Import::verify</span><span class="plain">(</span><span class="reserved">inter_frame</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">vcount</span><span class="plain"> = </span><span class="identifier">P</span><span class="element">.repo_segment</span><span class="plain">-</span><span class="element">&gt;bytecode</span><span class="plain">[</span><span class="identifier">P</span><span class="element">.index</span><span class="plain"> + </span><span class="constant">PREFRAME_VERIFICATION_COUNT</span><span class="plain">]++;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="element">.extent</span><span class="plain"> != </span><span class="constant">EXTENT_IMPORT_IFR</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&amp;</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"extent wrong"</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">symbol</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">SYMBOL_IMPORT_IFLD</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">symbol</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::Frame::error</span><span class="plain">(&amp;</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"no target name"</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="element">.data</span><span class="plain">[</span><span class="constant">TEXT_IMPORT_IFLD</span><span class="plain">] == 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&amp;</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"no translation text"</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">vcount</span><span class="plain"> == 0) {</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">TEXT_IMPORT_IFLD</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="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">P</span><span class="element">.repo_segment</span><span class="plain">-</span><span class="element">&gt;owning_repo</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">);</span>
<span class="functiontext">Inter::Symbols::set_export_name</span><span class="plain">(</span><span class="identifier">symbol</span><span class="plain">, </span><span class="identifier">S</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="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Import::write</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inter_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">symbol</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">SYMBOL_IMPORT_IFLD</span><span class="plain">);</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">TEXT_IMPORT_IFLD</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="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">P</span><span class="element">.repo_segment</span><span class="plain">-</span><span class="element">&gt;owning_repo</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"import %S \</span><span class="plain">"</span><span class="string">%S\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">symbol</span><span class="plain">-</span><span class="element">&gt;symbol_name</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">&amp;</span><span class="functiontext">Inter::Instance::show_dependencies</span><span class="plain">,</span>
<span class="identifier">I</span><span class="string">"instance"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"instances"</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Import::define is used in 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Instance::define is used in 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Import::read appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
<p class="endnote">The function Inter::Import::new appears nowhere else.</p>
<p class="endnote">The function Inter::Import::verify appears nowhere else.</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">DEFN_INST_IFLD</span><span class="plain"> 2</span>
<span class="definitionkeyword">define</span> <span class="constant">KIND_INST_IFLD</span><span class="plain"> 3</span>
<span class="definitionkeyword">define</span> <span class="constant">VAL1_INST_IFLD</span><span class="plain"> 4</span>
<span class="definitionkeyword">define</span> <span class="constant">VAL2_INST_IFLD</span><span class="plain"> 5</span>
<span class="definitionkeyword">define</span> <span class="constant">PLIST_INST_IFLD</span><span class="plain"> 6</span>
<span class="definitionkeyword">define</span> <span class="constant">PERM_LIST_INST_IFLD</span><span class="plain"> 7</span>
<span class="definitionkeyword">define</span> <span class="constant">EXTENT_INST_IFR</span><span class="plain"> 8</span>
</pre>
<p class="endnote">The function Inter::Import::write appears nowhere else.</p>
<pre class="display">
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Instance::read</span><span class="plain">(</span><span class="reserved">inter_reading_state</span><span class="plain"> *</span><span class="identifier">IRS</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="functiontext">Inter::Defn::vet_level</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="constant">INSTANCE_IST</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;no_annotations</span><span class="plain"> &gt; 0) </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">"__annotations are not allowed"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">ktext</span><span class="plain"> = </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1], *</span><span class="identifier">vtext</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">match_results</span><span class="plain"> </span><span class="identifier">mr2</span><span class="plain"> = </span><span class="identifier">Regexp::create_mr</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr2</span><span class="plain">, </span><span class="identifier">ktext</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%i+) = (%c+)"</span><span class="plain">)) { </span><span class="identifier">ktext</span><span class="plain"> = </span><span class="identifier">mr2</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]; </span><span class="identifier">vtext</span><span class="plain"> = </span><span class="identifier">mr2</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_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="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">), </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], &amp;</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="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_kind</span><span class="plain"> = </span><span class="functiontext">Inter::Textual::find_symbol</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">-</span><span class="element">&gt;read_into</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">IRS</span><span class="plain">), </span><span class="identifier">ktext</span><span class="plain">, </span><span class="constant">KIND_IST</span><span class="plain">, &amp;</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="reserved">inter_data_type</span><span class="plain"> *</span><span class="identifier">idt</span><span class="plain"> = </span><span class="functiontext">Inter::Kind::data_type</span><span class="plain">(</span><span class="identifier">inst_kind</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Types::is_enumerated</span><span class="plain">(</span><span class="identifier">idt</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="functiontext">Inter::Errors::quoted</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"not a kind which has instances"</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1], </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain"> = </span><span class="constant">UNDEF_IVAL</span><span class="plain">, </span><span class="identifier">v2</span><span class="plain"> = 0;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vtext</span><span class="plain">) {</span>
<span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Types::read</span><span class="plain">(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;line</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">IRS</span><span class="plain">-</span><span class="element">&gt;read_into</span><span class="plain">, </span><span class="identifier">IRS</span><span class="plain">-</span><span class="element">&gt;current_package</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">vtext</span><span class="plain">, &amp;</span><span class="identifier">v1</span><span class="plain">, &amp;</span><span class="identifier">v2</span><span class="plain">, </span><span class="functiontext">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">IRS</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="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Instance::new</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="functiontext">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="identifier">inst_name</span><span class="plain">), </span><span class="functiontext">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="identifier">inst_kind</span><span class="plain">), </span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">v2</span><span class="plain">, (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">&gt;indent_level</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Instance::new</span><span class="plain">(</span><span class="reserved">inter_reading_state</span><span class="plain"> *</span><span class="identifier">IRS</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">KID</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">V2</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_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::fill_6</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="constant">INSTANCE_IST</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, </span><span class="identifier">KID</span><span class="plain">, </span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">, </span><span class="functiontext">Inter::create_frame_list</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">-</span><span class="element">&gt;read_into</span><span class="plain">), </span><span class="functiontext">Inter::create_frame_list</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">-</span><span class="element">&gt;read_into</span><span class="plain">), </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</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="identifier">P</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
<span class="functiontext">Inter::Frame::insert</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">IRS</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Instance::verify</span><span class="plain">(</span><span class="reserved">inter_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">P</span><span class="element">.extent</span><span class="plain"> != </span><span class="constant">EXTENT_INST_IFR</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&amp;</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"extent wrong"</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="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Verify::defn</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="constant">DEFN_INST_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="identifier">E</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_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_INST_IFLD</span><span class="plain">);</span>
<span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Verify::symbol</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">KIND_INST_IFLD</span><span class="plain">], </span><span class="constant">KIND_IST</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">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_kind</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">KIND_INST_IFLD</span><span class="plain">);</span>
<span class="reserved">inter_data_type</span><span class="plain"> *</span><span class="identifier">idt</span><span class="plain"> = </span><span class="functiontext">Inter::Kind::data_type</span><span class="plain">(</span><span class="identifier">inst_kind</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Types::is_enumerated</span><span class="plain">(</span><span class="identifier">idt</span><span class="plain">)) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">VAL1_INST_IFLD</span><span class="plain">] == </span><span class="constant">UNDEF_IVAL</span><span class="plain">) {</span>
<span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">VAL1_INST_IFLD</span><span class="plain">] = </span><span class="constant">LITERAL_IVAL</span><span class="plain">;</span>
<span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">VAL2_INST_IFLD</span><span class="plain">] = </span><span class="functiontext">Inter::Kind::next_enumerated_value</span><span class="plain">(</span><span class="identifier">inst_kind</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&amp;</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"not a kind which has instances"</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::Verify::value</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="constant">VAL1_INST_IFLD</span><span class="plain">, </span><span class="identifier">inst_kind</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">vcount</span><span class="plain"> = </span><span class="identifier">P</span><span class="element">.repo_segment</span><span class="plain">-</span><span class="element">&gt;bytecode</span><span class="plain">[</span><span class="identifier">P</span><span class="element">.index</span><span class="plain"> + </span><span class="constant">PREFRAME_VERIFICATION_COUNT</span><span class="plain">]++;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">vcount</span><span class="plain"> == 0) </span><span class="functiontext">Inter::Kind::new_instance</span><span class="plain">(</span><span class="identifier">inst_kind</span><span class="plain">, </span><span class="identifier">inst_name</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::Instance::permissions_list</span><span class="plain">(</span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">kind_symbol</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">kind_symbol</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 0;</span>
<span class="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">D</span><span class="plain"> = </span><span class="functiontext">Inter::Symbols::defining_frame</span><span class="plain">(</span><span class="identifier">kind_symbol</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Frame::valid</span><span class="plain">(&amp;</span><span class="identifier">D</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 0;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">D</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PERM_LIST_INST_IFLD</span><span class="plain">];</span>
<span class="plain">}</span>
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Instance::write</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inter_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">inst_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_INST_IFLD</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_kind</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">KIND_INST_IFLD</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">inst_name</span><span class="plain">) &amp;&amp; (</span><span class="identifier">inst_kind</span><span class="plain">)) {</span>
<span class="reserved">inter_data_type</span><span class="plain"> *</span><span class="identifier">idt</span><span class="plain"> = </span><span class="functiontext">Inter::Kind::data_type</span><span class="plain">(</span><span class="identifier">inst_kind</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">idt</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"instance %S %S = "</span><span class="plain">, </span><span class="identifier">inst_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">inst_kind</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="functiontext">Inter::Types::write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">P</span><span class="element">.repo_segment</span><span class="plain">-</span><span class="element">&gt;owning_repo</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">,</span>
<span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">VAL1_INST_IFLD</span><span class="plain">], </span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">VAL2_INST_IFLD</span><span class="plain">], </span><span class="functiontext">Inter::Packages::scope_of</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&amp;</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"instance with bad data type"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&amp;</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"bad instance"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="functiontext">Inter::Symbols::write_annotations</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">P</span><span class="element">.repo_segment</span><span class="plain">-</span><span class="element">&gt;owning_repo</span><span class="plain">, </span><span class="identifier">inst_name</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Instance::show_dependencies</span><span class="plain">(</span><span class="reserved">inter_frame</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">callback</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="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_symbol</span><span class="plain"> *, </span><span class="reserved">void</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_symbol</span><span class="plain"> *</span><span class="identifier">inst_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_INST_IFLD</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_kind</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">KIND_INST_IFLD</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">inst_name</span><span class="plain">) &amp;&amp; (</span><span class="identifier">inst_kind</span><span class="plain">)) (*</span><span class="identifier">callback</span><span class="plain">)(</span><span class="identifier">inst_name</span><span class="plain">, </span><span class="identifier">inst_kind</span><span class="plain">, </span><span class="identifier">state</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::Instance::properties_list</span><span class="plain">(</span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_name</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">inst_name</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 0;</span>
<span class="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">D</span><span class="plain"> = </span><span class="functiontext">Inter::Symbols::defining_frame</span><span class="plain">(</span><span class="identifier">inst_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Frame::valid</span><span class="plain">(&amp;</span><span class="identifier">D</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 0;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">D</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PLIST_INST_IFLD</span><span class="plain">];</span>
<span class="plain">}</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::Instance::kind_of</span><span class="plain">(</span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_name</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">inst_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="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">D</span><span class="plain"> = </span><span class="functiontext">Inter::Symbols::defining_frame</span><span class="plain">(</span><span class="identifier">inst_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Frame::valid</span><span class="plain">(&amp;</span><span class="identifier">D</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">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">D</span><span class="element">.data</span><span class="plain">[</span><span class="constant">ID_IFLD</span><span class="plain">] != </span><span class="constant">INSTANCE_IST</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::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">D</span><span class="plain">, </span><span class="constant">KIND_INST_IFLD</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Instance::read is used in <a href="#SP1">&#167;1</a>.</p>
<p class="endnote">The function Inter::Instance::new appears nowhere else.</p>
<p class="endnote">The function Inter::Instance::verify is used in <a href="#SP1">&#167;1</a>.</p>
<p class="endnote">The function Inter::Instance::permissions_list is used in 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Instance::write is used in <a href="#SP1">&#167;1</a>.</p>
<p class="endnote">The function Inter::Instance::show_dependencies is used in <a href="#SP1">&#167;1</a>.</p>
<p class="endnote">The function Inter::Instance::properties_list is used in 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Instance::kind_of is used in 2/idt (<a href="2-idt.html#SP2">&#167;2</a>, <a href="2-idt.html#SP3">&#167;3</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="4-tsc.html">Back to 'The Symbol Construct'</a></li><li><a href="4-tec.html">Continue with 'The Export Construct'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="4-trc.html">Back to 'The Response Construct'</a></li><li><a href="4-tpc4.html">Continue with 'The Property Construct'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -494,7 +494,7 @@
<p class="endnote">The function Inter::Kind::show_dependencies is used in <a href="#SP1">&#167;1</a>.</p>
<p class="endnote">The function Inter::Kind::new_instance is used in 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Kind::new_instance is used in 4/tic (<a href="4-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Kind::instance_count appears nowhere else.</p>
@ -504,9 +504,9 @@
<p class="endnote">The function Inter::Kind::operand_symbol is used in 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Kind::data_type is used in 2/idt (<a href="2-idt.html#SP2">&#167;2</a>, <a href="2-idt.html#SP3">&#167;3</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Kind::data_type is used in 2/idt (<a href="2-idt.html#SP2">&#167;2</a>, <a href="2-idt.html#SP3">&#167;3</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Kind::next_enumerated_value is used in 4/tic2 (<a href="4-tic2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Kind::next_enumerated_value is used in 4/tic (<a href="4-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Kind::super is used in 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>).</p>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>4/tic2</title>
<title>4/tic</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
@ -130,7 +130,7 @@
<p class="endnote">The function Inter::Property::kind_of is used in 2/idt (<a href="2-idt.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="4-tic2.html">Back to 'The Instance Construct'</a></li><li><a href="4-tpc5.html">Continue with 'The PropertyValue Construct'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="4-tic.html">Back to 'The Instance Construct'</a></li><li><a href="4-tpc5.html">Continue with 'The PropertyValue Construct'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -128,7 +128,7 @@
<p class="endnote">The function Inter::Response::show_dependencies is used in <a href="#SP1">&#167;1</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="4-tcc2.html">Back to 'The Constant Construct'</a></li><li><a href="4-tic2.html">Continue with 'The Instance Construct'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="4-tcc2.html">Back to 'The Constant Construct'</a></li><li><a href="4-tic.html">Continue with 'The Instance Construct'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -121,7 +121,7 @@
<p class="endnote">The function Inter::Symbol::write appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="4-tmc2.html">Back to 'The Marker Construct'</a></li><li><a href="4-tic.html">Continue with 'The Import Construct'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="4-tmc2.html">Back to 'The Marker Construct'</a></li><li><a href="4-tvc.html">Continue with 'The Version Construct'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>4/tec</title>
<title>4/tsc</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
@ -89,7 +89,7 @@
<p class="endnote">The function Inter::Version::write is used in <a href="#SP1">&#167;1</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="4-tec.html">Back to 'The Export Construct'</a></li><li><a href="4-tpc.html">Continue with 'The Pragma Construct'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="4-tsc.html">Back to 'The Symbol Construct'</a></li><li><a href="4-tpc.html">Continue with 'The Pragma Construct'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -117,14 +117,6 @@
<p><a href="4-tsc.html"><spon class="sectiontitle">The Symbol Construct</span></a> -
<span class="purpose">Defining the symbol construct.</span></p>
</li>
<li>
<p><a href="4-tic.html"><spon class="sectiontitle">The Import Construct</span></a> -
<span class="purpose">Defining the import construct.</span></p>
</li>
<li>
<p><a href="4-tec.html"><spon class="sectiontitle">The Export Construct</span></a> -
<span class="purpose">Defining the export construct.</span></p>
</li>
<li>
<p><a href="4-tvc.html"><spon class="sectiontitle">The Version Construct</span></a> -
<span class="purpose">Defining the version construct.</span></p>
@ -170,7 +162,7 @@
<span class="purpose">Defining the response construct.</span></p>
</li>
<li>
<p><a href="4-tic2.html"><spon class="sectiontitle">The Instance Construct</span></a> -
<p><a href="4-tic.html"><spon class="sectiontitle">The Instance Construct</span></a> -
<span class="purpose">Defining the instance construct.</span></p>
</li>
<li>

View file

@ -71,8 +71,7 @@ Equivalently, a replacement chain can be specified at the Inform 7 command line:
<p class="inwebparagraph">When using a chain within Inform, one further description syntax is allowed:
the filename <code class="display"><span class="extract">*</span></code> means "the filename Inform wants to use for the final
Inform 6 file". This tends to be used for the final stage in the chain, which
is normally <code class="display"><span class="extract">generate-i6:*</span></code>.
Inform 6 file".
</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The code-generation stages. </b>The following are all experimental, and have probably not yet reached their

View file

@ -583,6 +583,7 @@ to the Z-machine, because it's only legal in I6 when compiling to Glulx.
</pre>
<p class="inwebparagraph"></p>

View file

@ -79,15 +79,8 @@
else
set: $SRINTERB = inform7/Internal/I6T/sr-Z.interb
endif
! if: $CASE Imp_%c*
! set: $INTERCHAIN = import:$SRINTERB,link:Output.i6t,parse-linked-matter,resolve-conditional-compilation,assimilate,make-identifiers-unique,resolve-external-symbols,reconcile-verbs,generate-inter:haha.txt,generate-i6:*
! set: $IMPORT = -import $SRINTERB
! else
! set: $INTERCHAIN = import:$SRINTERB,link:Output.i6t,parse-linked-matter,resolve-conditional-compilation,assimilate,make-identifiers-unique,resolve-external-symbols,reconcile-verbs,generate-inter:haha.txt,generate-i6:*
! set: $IMPORT = -import $SRINTERB
! endif
set: $INTERCHAIN = link:Output.i6t,parse-linked-matter,resolve-conditional-compilation,assimilate,make-identifiers-unique,resolve-external-symbols,reconcile-verbs,generate-i6:*
set: $INTERCHAIN = link:Output.i6t,parse-linked-matter,resolve-conditional-compilation,assimilate,make-identifiers-unique,resolve-external-symbols,reconcile-verbs,generate:inform6->*
! First, problem message cases, where we require ni to fail and with the
! correct output.
@ -95,7 +88,6 @@
if: $TYPE problem
set: $A = $PATH/_Results_Actual/$CASE.txt
set: $I = $PATH/_Results_Ideal/$CASE.txt
! fail step: $I7 `$I7OPTIONS -require-problem $CASE -project $WORK/Example.inform -import $SRINTERB -inter $INTERCHAIN >$A 2>&1
fail step: $I7 `$I7OPTIONS -require-problem $CASE -project $WORK/Example.inform -inter $INTERCHAIN >$A 2>&1
or: 'failed to produce its namesake Problem message' $A
show: $A
@ -109,7 +101,6 @@
! And then the general case.
set: $I7CONSOLE = $WORK/Example.inform/Build/i7_output.txt
! step: $I7 `$I7OPTIONS -format=$FORMAT -project $WORK/Example.inform -import $SRINTERB -inter $INTERCHAIN >$I7CONSOLE 2>&1
step: $I7 `$I7OPTIONS -format=$FORMAT -project $WORK/Example.inform -inter $INTERCHAIN >$I7CONSOLE 2>&1
or: 'failed with Problem message(s)' $I7CONSOLE
show: $I7CONSOLE

View file

@ -58,7 +58,6 @@ int indexing_stage = FALSE; /* Everything is done except indexing */
@ =
int report_clock_time = FALSE;
time_t right_now;
int export_mode = FALSE, import_mode = FALSE;
text_stream *inter_processing_chain = NULL;
pathname *path_to_inform7 = NULL;
@ -98,8 +97,7 @@ int CoreMain::main(int argc, char *argv[]) {
@<Banner and startup@> =
Errors::set_internal_handler(&Problems::Issue::internal_error_fn);
story_filename_extension = I"ulx";
inter_processing_chain = I"link:Output.i6t,parse-linked-matter,resolve-conditional-compilation,assimilate,make-identifiers-unique,resolve-external-symbols,reconcile-verbs,generate-i6:*";
CoreMain::set_inter_chain_modes();
inter_processing_chain = I"link: Output.i6t, parse-linked-matter, resolve-conditional-compilation, assimilate, make-identifiers-unique, resolve-external-symbols, reconcile-verbs, generate: inform6 -> *";
PRINT("%B build %B has started.\n", FALSE, TRUE);
STREAM_FLUSH(STDOUT);
@ -125,8 +123,6 @@ list is not exhaustive.
@e SIGILS_CLSW
@e TRANSIENT_CLSW
@e INTER_CLSW
@e IMPORT_CLSW
@e EXPORT_CLSW
@<Register command-line arguments@> =
CommandLine::declare_heading(
@ -159,10 +155,6 @@ list is not exhaustive.
L"return 0 unless exactly this Problem message is generated (for testing)");
CommandLine::declare_switch(INTER_CLSW, L"inter", 2,
L"specify code-generation chain for inter code");
CommandLine::declare_switch(IMPORT_CLSW, L"import", 2,
L"import Standard Rules as module (experimental)");
CommandLine::declare_switch(EXPORT_CLSW, L"export", 2,
L"export Standard Rules as module (experimental)");
CommandLine::declare_switch(PROJECT_CLSW, L"project", 2,
L"work within the Inform project X");
@ -391,7 +383,6 @@ with "Output.i6t".
COMPILATION_STEP(PL::Showme::compile_SHOWME_details, I"PL::Showme::compile_SHOWME_details")
COMPILATION_STEP(Phrases::Timed::TimedEventsTable, I"Phrases::Timed::TimedEventsTable")
COMPILATION_STEP(Phrases::Timed::TimedEventTimesTable, I"Phrases::Timed::TimedEventTimesTable")
COMPILATION_STEP(Rules::export_named_rules, I"Rules::export_named_rules")
@<Convert inter to Inform 6@> =
if ((problem_count == 0) && (existing_story_file == FALSE)) {
@ -400,12 +391,6 @@ with "Output.i6t".
CoreMain::go_to_log_phase(I"Converting inter to Inform 6");
if (existing_story_file == FALSE) {
codegen_pipeline *SS = CodeGen::Pipeline::new();
if ((import_mode) && (filename_of_SR_module))
CodeGen::Pipeline::parse_into(SS, I"import:*",
Filenames::get_leafname(filename_of_SR_module));
else if ((export_mode) && (filename_of_SR_module))
CodeGen::Pipeline::parse_into(SS, I"export:*",
Filenames::get_leafname(filename_of_SR_module));
CodeGen::Pipeline::parse_into(SS, inter_processing_chain,
Filenames::get_leafname(filename_of_compiled_i6_code));
CodeGen::Pipeline::run(Filenames::get_path_to(filename_of_compiled_i6_code),
@ -489,8 +474,6 @@ void CoreMain::switch(int id, int val, text_stream *arg, void *state) {
case INTERNAL_CLSW: Locations::set_internal(arg); break;
case EXTERNAL_CLSW: Locations::set_external(arg); break;
case TRANSIENT_CLSW: Locations::set_transient(arg); break;
case IMPORT_CLSW: if (disable_import == FALSE) { import_mode = TRUE; Locations::set_SR_module(arg); } break;
case EXPORT_CLSW: export_mode = TRUE; Locations::set_SR_module(arg); break;
default: internal_error("unimplemented switch");
}
@ -503,7 +486,6 @@ void CoreMain::bareword(int id, text_stream *opt, void *state) {
void CoreMain::disable_importation(void) {
disable_import = TRUE;
import_mode = FALSE;
}
void CoreMain::set_inter_chain(wording W) {
@ -512,12 +494,4 @@ void CoreMain::set_inter_chain(wording W) {
Str::delete_first_character(inter_processing_chain);
Str::delete_last_character(inter_processing_chain);
LOG("Setting chain %S\n", inter_processing_chain);
CoreMain::set_inter_chain_modes();
}
void CoreMain::set_inter_chain_modes() {
import_mode = FALSE; export_mode = FALSE;
codegen_pipeline *pipeline = CodeGen::Pipeline::parse(inter_processing_chain, I"nowhere");
int port = CodeGen::Pipeline::port_direction(pipeline);
if (port == 1) export_mode = TRUE;
if ((port == -1) && (disable_import == FALSE)) import_mode = TRUE;
}

View file

@ -367,7 +367,7 @@ constants, and use the Link constants to progress; we stop at |nothing|.
int PL::Counting::optimise_loop(i6_schema *sch, kind *K) {
if (Plugins::Manage::plugged_in(counting_plugin) == FALSE) return FALSE;
inference_subject *subj = Kinds::Knowledge::as_subject(K);
if ((export_mode == FALSE) && (PF_S(counting, subj)->has_instances == FALSE)) /* (to avoid writing misleading code) */
if (PF_S(counting, subj)->has_instances == FALSE) /* (to avoid writing misleading code) */
Calculus::Schemas::modify(sch,
"for (*1=nothing: false: )");
else {

View file

@ -677,14 +677,9 @@ void Rules::compile_definition(rule *R, int *i, int max_i) {
if (R->defn_compiled == FALSE) {
R->defn_compiled = TRUE;
rule_being_compiled = R;
if (R->defn_as_phrase) {
if ((import_mode) && (R->do_not_import == FALSE) && (Rules::portable(R))) {
Emit::import(Rules::iname(R), R->name);
Phrases::import(R->defn_as_phrase);
}
if (R->defn_as_phrase)
Phrases::compile(R->defn_as_phrase, i, max_i,
R->listed_stv_owners, NULL, R->first_applicability_condition);
}
if ((R->rule_extern_iname) && (R->first_applicability_condition))
@<Compile a shell routine to apply conditions to an I6 rule@>;
rule_being_compiled = NULL;
@ -977,15 +972,6 @@ int Rules::portable(rule *R) {
return FALSE;
}
void Rules::export_named_rules(void) {
if (export_mode) {
rule *R;
LOOP_OVER(R, rule)
if (Rules::portable(R))
Emit::export(Rules::iname(R), R->name);
}
}
package_request *Rules::package(rule *R) {
return R->rule_package;
}

View file

@ -240,7 +240,7 @@ void UseOptions::set_use_options(parse_node *p) {
@<Set the chain given in this word range@> =
wording CW = GET_RW(<use-inter-chain>, 1);
CoreMain::set_inter_chain(CW);
if (traverse == 1) CoreMain::set_inter_chain(CW);
return;
@<Adjust the minimum setting@> =

View file

@ -164,20 +164,6 @@ void Emit::append(inter_name *iname, text_stream *text) {
Packaging::exit(save);
}
void Emit::import(inter_name *iname, wording W) {
inter_symbol *symbol = InterNames::to_symbol(iname);
inter_t ID = Inter::create_text(Emit::repository());
WRITE_TO(Inter::get_text(Emit::repository(), ID), "%W", W);
Emit::guard(Inter::Import::new(Packaging::at(), symbol, ID, Emit::baseline(Packaging::at()), NULL));
}
void Emit::export(inter_name *iname, wording W) {
inter_symbol *symbol = InterNames::to_symbol(iname);
inter_t ID = Inter::create_text(Emit::repository());
WRITE_TO(Inter::get_text(Emit::repository(), ID), "%W", W);
Emit::guard(Inter::Export::new(Packaging::at(), symbol, ID, Emit::baseline(Packaging::at()), NULL));
}
inter_symbols_table *Emit::main_scope(void) {
return Inter::Packages::scope(Inter::Packages::main(Emit::repository()));
}

View file

@ -41,8 +41,7 @@ Equivalently, a replacement chain can be specified at the Inform 7 command line:
When using a chain within Inform, one further description syntax is allowed:
the filename |*| means "the filename Inform wants to use for the final
Inform 6 file". This tends to be used for the final stage in the chain, which
is normally |generate-i6:*|.
Inform 6 file".
@h The code-generation stages.
The following are all experimental, and have probably not yet reached their

View file

@ -1,94 +0,0 @@
Dependencies:
V_banana depends on K_number
C_death depends on K_number
C_taxes depends on K_number
V_anxiety depends on K_number
V_anxiety depends on C_death
C_i depends on K_other_number
K_other_number depends on C_i
C_x depends on K_number
cornelius depends on K_number
gaius depends on K_number
I_green depends on K_colour
I_red depends on K_colour
V_shade depends on K_colour
V_shade depends on I_red
K_list_of_number depends on K_number
C_primes depends on K_list_of_number
C_concealed depends on K_list_of_number
C_concealed depends on C_primes
V_watch_list depends on K_list_of_number
V_watch_list depends on C_concealed
C_complaint depends on K_text
C_raw depends on K_number
I_citrus depends on K_odour
I_leather depends on K_odour
P_strength depends on K_number
P_strength depends on K_odour
I_citrus depends on P_strength
I_leather depends on P_strength
P_lingeringness depends on K_number
P_lingeringness depends on K_odour
I_citrus depends on P_lingeringness
I_leather depends on P_lingeringness
K_odour depends on P_lingeringness
K_column_of_number depends on K_number
K_column_of_colour depends on K_colour
C_egtable_col1 depends on K_column_of_number
C_egtable_col2 depends on K_column_of_colour
C_egtable_col2 depends on I_green
C_egtable_col2 depends on I_red
C_egtable depends on K_table
C_egtable depends on C_egtable_col1
C_egtable depends on C_egtable_col2
I_board depends on K_object
K_piece depends on K_object
I_bishop depends on K_piece
I_rook depends on K_piece
K_list_of_objects depends on K_object
C_majors depends on K_list_of_objects
C_majors depends on I_bishop
C_majors depends on I_rook
P_lingeringness depends on I_bishop
K_func depends on K_colour
K_func depends on K_number
K_func depends on K_odour
K_rulebook depends on K_rule
K_stuff depends on K_number
K_stuff depends on K_colour
K_stuff depends on K_odour
S_stuff depends on K_stuff
S_stuff depends on I_red
S_stuff depends on I_citrus
R_after1 depends on K_rule
R_after1 depends on R_after1_B
R_after2 depends on K_rule
R_after2 depends on R_after2_B
RB_after depends on K_rulebook
RB_after depends on R_after1
RB_after depends on R_after2
K_colour____colour depends on K_colour
K_colour____colour depends on K_colour
R_101_B depends on K_colour
R_101_B depends on R_102
R_101_B depends on K_colour
R_101_B depends on I_green
R_101_B depends on K_colour
R_101_B depends on K_number
R_101_B depends on K_colour
R_101_B depends on x
R_101_B depends on K_number
R_101_B depends on K_number
R_101_B depends on R_101
R_101_B depends on C_majors
R_101 depends on K_colour____colour
R_101 depends on R_101_B
R_102_B depends on K_colour
R_102_B depends on K_colour
R_102_B depends on I_red
R_102 depends on K_colour____colour
R_102 depends on R_102_B
amount depends on K_number
amount depends on C_taxes
R_101 depends on R_101_A
R_101_A depends on C_taxes

View file

@ -1,119 +0,0 @@
# This is a miscellany of tests.
version 7
packagetype _plain
packagetype _code
primitive !return val -> void
primitive !modulo val val -> val
primitive !plus val val -> val
pragma target_I6 "$MAX_STATIC_DATA=180000"
package main _plain
kind K_number int32
defaultvalue K_number = 47
variable V_banana K_number = 100
constant C_death K_number = -5
constant C_taxes K_number = 14
variable V_anxiety K_number = C_death
kind K_other_number int32
constant C_i K_other_number = 2
defaultvalue K_other_number = C_i
constant C_x K_number = 0x7f2a __hex
link early "alpha" "beta" "gamma" "delta"
link before "alpha" "" "" ""
link instead "" "beta" "" ""
link after "" "" "gamma" ""
constant cornelius K_number = dw'frogs'
constant gaius K_number = dw'toads'
marker mark_my_words
symbol external misc peach
splat &"Sing a song of \"six splats\"...\nand don't wait up"
# Spong.
kind K_colour enum
instance I_green K_colour = 1
instance I_red K_colour = 17
variable V_shade K_colour = I_red
kind K_list_of_number list of K_number
constant C_primes K_list_of_number = { 2, 3, 5, 7, 11, 13, 17, 19 }
constant C_concealed K_list_of_number = C_primes
variable V_watch_list K_list_of_number = C_concealed
marker 718_varieties
kind K_text text
constant C_complaint K_text = "This is already quite a long test case."
constant C_raw K_number = &"SOME_I6_DRIVEL"
kind K_odour enum
instance I_citrus K_odour = 5
instance I_leather K_odour = 10
property P_strength K_number __property_name="strength"
permission P_strength K_odour
propertyvalue P_strength I_citrus = 20
propertyvalue P_strength I_leather = 7
property P_lingeringness K_number
permission P_lingeringness K_odour
propertyvalue P_lingeringness I_citrus = 1
propertyvalue P_lingeringness I_leather = 3
propertyvalue P_lingeringness K_odour = 2
kind K_table table
kind K_column_of_number column of K_number
kind K_column_of_colour column of K_colour
constant C_egtable_col1 K_column_of_number = { 1, 4, 9, 16 }
constant C_egtable_col2 K_column_of_colour = { I_green, undef, I_red }
constant C_egtable K_table = { C_egtable_col1, C_egtable_col2 }
kind K_object enum
instance I_board K_object = 1
kind K_piece <= K_object
instance I_bishop K_piece = 2
instance I_rook K_piece = 3
kind K_list_of_objects list of K_object
constant C_majors K_list_of_objects = { I_bishop, I_rook }
permission P_lingeringness I_bishop
kind K_func function K_colour K_number -> K_odour
kind K_rule rule void -> void
kind K_rulebook rulebook of K_rule
kind K_stuff struct K_number K_colour K_odour
constant S_stuff K_stuff = { 5, I_red, I_citrus }
package R_after1_B _code
package R_after2_B _code
constant R_after1 K_rule = R_after1_B
constant R_after2 K_rule = R_after2_B
constant RB_after K_rulebook = { R_after1, R_after2 }
kind K_colour____colour function K_colour -> K_colour
package R_101_B _code
symbol private misc x
symbol private label .begin
symbol private label .end
symbol external misc K_colour == /main/K_colour
symbol external misc K_number == /main/K_number
symbol external misc I_green == /main/I_green
symbol external misc R_102 == /main/R_102
local x K_colour __call_parameter
.begin
inv R_102
val K_colour I_green
inv !return
inv !modulo
inv !plus
cast K_number <- K_colour
val K_colour x
val K_number 1
val K_number 3
splat &"return R_101(C_majors);"
.end
constant R_101 K_colour____colour = R_101_B
package R_102_B _code
symbol private misc x
symbol private label .begin
symbol private label .end
symbol external misc K_colour == /main/K_colour
symbol external misc I_red == /main/I_red
local x K_colour __call_parameter
.begin
inv !return
val K_colour I_red
.end
constant R_102 K_colour____colour = R_102_B
constant amount K_number = sum{ 2, C_taxes }
response R_101_A R_101 0 = C_taxes

View file

@ -1,7 +1,6 @@
-cases [Valid] 'inter/Tests/Valid'
-cases [Invalid] 'inter/Tests/Invalid'
-cases [Generations] 'inter/Tests/Generations'
-cases [Graph] 'inter/Tests/Graph'
-cases [RCC] 'inter/Tests/RCC'
-cases [PLM] 'inter/Tests/PLM'
-cases [Assimilate] 'inter/Tests/Assimilate'
@ -61,7 +60,7 @@
mkdir: $PATH/_Results_Ideal
mkdir: $PATH/_Console
step: inter/Tangled/inter $O -inter 'parse-linked-matter, resolve-conditional-compilation, assimilate, generate-i6:$A' >$T 2>&1
step: inter/Tangled/inter $O -inter 'parse-linked-matter, resolve-conditional-compilation, assimilate, generate: inform6 -> $A' >$T 2>&1
or: 'failed to produce output' $T
show: $A
@ -82,28 +81,7 @@
mkdir: $PATH/_Results_Ideal
mkdir: $PATH/_Console
step: inter/Tangled/inter $O -inter 'parse-linked-matter, resolve-conditional-compilation, generate-inter:$A' >$T 2>&1
or: 'failed to produce output' $T
show: $A
match text: $A $I
or: 'produced incorrect output'
-end
-recipe [Graph]
set: $O = $PATH/$CASE.intert
set: $A = $PATH/_Results_Actual/$CASE.txt
set: $I = $PATH/_Results_Ideal/$CASE.txt
set: $T = $PATH/_Console/$CASE.txt
mkdir: $PATH/_Results_Actual
mkdir: $PATH/_Results_Ideal
mkdir: $PATH/_Console
step: inter/Tangled/inter $O -inter 'show-dependencies:$A' >$T 2>&1
step: inter/Tangled/inter $O -inter 'parse-linked-matter, resolve-conditional-compilation, generate: text ->$A' >$T 2>&1
or: 'failed to produce output' $T
show: $A
@ -124,7 +102,7 @@
mkdir: $PATH/_Results_Ideal
mkdir: $PATH/_Console
step: inter/Tangled/inter $O -inter 'parse-linked-matter, generate-inter:$A' >$T 2>&1
step: inter/Tangled/inter $O -inter 'parse-linked-matter, generate: text ->$A' >$T 2>&1
or: 'failed to produce output' $T
show: $A
@ -145,7 +123,7 @@
mkdir: $PATH/_Results_Ideal
mkdir: $PATH/_Console
step: inter/Tangled/inter $O -inter 'parse-linked-matter, assimilate, generate-inter:$A' >$T 2>&1
step: inter/Tangled/inter $O -inter 'parse-linked-matter, assimilate, generate: text ->$A' >$T 2>&1
or: 'failed to produce output' $T
show: $A

View file

@ -19,6 +19,7 @@ We need to itemise the structures we'll want to allocate:
@e inter_schema_token_MT
@e routine_body_request_MT
@e pipeline_stage_MT
@e code_generation_target_MT
@ With allocation functions:
@ -33,6 +34,7 @@ ALLOCATE_INDIVIDUALLY(inter_schema_node)
ALLOCATE_INDIVIDUALLY(inter_schema_token)
ALLOCATE_INDIVIDUALLY(routine_body_request)
ALLOCATE_INDIVIDUALLY(pipeline_stage)
ALLOCATE_INDIVIDUALLY(code_generation_target)
@h The beginning.
(The client doesn't need to call the start and end routines, because the

View file

@ -12,6 +12,7 @@ have no meaningful contents when the step is not running.
typedef struct pipeline_step {
struct pipeline_stage *step_stage;
struct text_stream *step_argument;
struct code_generation_target *target_argument;
struct filename *parsed_filename;
struct pathname **the_PP;
@ -45,17 +46,33 @@ logging:
=
void CodeGen::Pipeline::write_step(OUTPUT_STREAM, pipeline_step *step) {
if (step->step_stage->stage_arg == NO_STAGE_ARG)
WRITE("%S", step->step_stage->stage_name);
else
WRITE("%S:%S", step->step_stage->stage_name, step->step_argument);
WRITE("%S", step->step_stage->stage_name);
if (step->step_stage->stage_arg != NO_STAGE_ARG) {
WRITE(":");
if (step->target_argument) WRITE(" %S ->", step->target_argument->target_name);
WRITE(" %S", step->step_argument);
}
}
pipeline_step *CodeGen::Pipeline::read_step(text_stream *step, text_stream *leafname) {
CodeGen::Stage::make_stages();
CodeGen::Targets::make_targets();
pipeline_step *ST = CodeGen::Pipeline::new_step();
match_results mr = Regexp::create_mr();
if (Regexp::match(&mr, step, L"(%c+?) *: *(%c*)")) {
if (Regexp::match(&mr, step, L"(%c+?) *: *(%C*) *-> *(%c*)")) {
ST->step_argument = Str::new();
code_generation_target *cgt;
LOOP_OVER(cgt, code_generation_target)
if (Str::eq(mr.exp[1], cgt->target_name))
ST->target_argument = cgt;
if (ST->target_argument == NULL) {
WRITE_TO(STDERR, "No such code generation target as '%S'\n", mr.exp[1]);
internal_error("no such target");
}
Str::copy(ST->step_argument, mr.exp[2]);
Str::copy(step, mr.exp[0]);
if (Str::eq(ST->step_argument, I"*")) Str::copy(ST->step_argument, leafname);
} else if (Regexp::match(&mr, step, L"(%c+?) *: *(%c*)")) {
ST->step_argument = Str::new();
Str::copy(ST->step_argument, mr.exp[1]);
Str::copy(step, mr.exp[0]);
@ -65,7 +82,11 @@ pipeline_step *CodeGen::Pipeline::read_step(text_stream *step, text_stream *leaf
LOOP_OVER(stage, pipeline_stage)
if (Str::eq(step, stage->stage_name))
ST->step_stage = stage;
if (ST->step_stage == NULL) internal_error("no such step code");
if (ST->step_stage == NULL) {
WRITE_TO(STDERR, "No such step as '%S'\n", step);
internal_error("no such step code");
}
Regexp::dispose_of(&mr);
return ST;
}
@ -92,11 +113,15 @@ codegen_pipeline *CodeGen::Pipeline::parse(text_stream *instructions, text_strea
void CodeGen::Pipeline::parse_into(codegen_pipeline *S, text_stream *instructions, text_stream *leafname) {
if (instructions == NULL)
instructions = I"link:Output.i6t, parse-linked-matter, resolve-conditional-compilation, assimilate, reconcile-verbs, generate-i6:*";
instructions = I"link:Output.i6t, parse-linked-matter, resolve-conditional-compilation, assimilate, reconcile-verbs, generate: inform6 -> *";
TEMPORARY_TEXT(T);
Str::copy(T, instructions);
LOOP_THROUGH_TEXT(P, instructions)
if (Characters::is_babel_whitespace(Str::get(P)))
PUT_TO(T, ' ');
else
PUT_TO(T, Str::get(P));
match_results mr = Regexp::create_mr();
while (Regexp::match(&mr, T, L" *(%c+?) *, *(%c*)")) {
while (Regexp::match(&mr, T, L" *(%c+?) *, *(%c*?) *")) {
pipeline_step *ST = CodeGen::Pipeline::read_step(mr.exp[0], leafname);
ADD_TO_LINKED_LIST(ST, pipeline_step, S->steps);
Str::copy(T, mr.exp[1]);
@ -107,14 +132,6 @@ void CodeGen::Pipeline::parse_into(codegen_pipeline *S, text_stream *instruction
}
}
int CodeGen::Pipeline::port_direction(codegen_pipeline *pipeline) {
pipeline_step *SS;
LOOP_OVER_LINKED_LIST(SS, pipeline_step, pipeline->steps)
if (SS->step_stage->port_direction != 0)
return SS->step_stage->port_direction;
return 0;
}
void CodeGen::Pipeline::run(pathname *P, codegen_pipeline *S, inter_repository *I, int N, pathname **PP, pathname *PM, pathname *FM) {
if (S == NULL) return;
clock_t start = clock();

View file

@ -18,7 +18,6 @@ write output to; others are not.
typedef struct pipeline_stage {
struct text_stream *stage_name;
int (*execute)(void *);
int port_direction;
int stage_arg; /* one of the |*_ARG| values above */
MEMORY_MANAGEMENT
} pipeline_stage;
@ -27,19 +26,10 @@ pipeline_stage *CodeGen::Stage::new(text_stream *name, int (*X)(struct pipeline_
pipeline_stage *stage = CREATE(pipeline_stage);
stage->stage_name = Str::duplicate(name);
stage->execute = (int (*)(void *)) X;
stage->port_direction = 0;
stage->stage_arg = arg;
return stage;
}
@ Supplying this as the execute routine for a stage marks it as disabled.
=
int CodeGen::Stage::stage_disabled(pipeline_step *step) {
WRITE_TO(step->text_out_file, "Currently disabled\n");
return TRUE;
}
@h Creation.
To add a new pipeline stage, put the code for it into a new section in
Chapter 2, and then add a call to its |create_pipeline_stage| routine
@ -52,19 +42,10 @@ void CodeGen::Stage::make_stages(void) {
stages_made = TRUE;
CodeGen::Stage::new(I"stop", CodeGen::Stage::run_stop_stage, NO_STAGE_ARG);
CodeGen::Stage::new(I"show-dependencies", CodeGen::Stage::run_show_dependencies_stage, EXT_TEXT_OUT_STAGE_ARG);
CodeGen::Stage::new(I"log-dependencies", CodeGen::Stage::run_log_dependencies_stage, NO_STAGE_ARG);
CodeGen::Stage::new(I"generate-inter", CodeGen::Stage::run_generate_inter_stage, TEXT_OUT_STAGE_ARG);
CodeGen::Stage::new(I"generate-inter-binary", CodeGen::Stage::run_generate_inter_binary_stage, FILE_STAGE_ARG);
CodeGen::Stage::new(I"summarise", CodeGen::Stage::run_summarise_stage, TEXT_OUT_STAGE_ARG);
pipeline_stage *ex = CodeGen::Stage::new(I"export", CodeGen::Stage::stage_disabled, EXT_TEXT_OUT_STAGE_ARG);
ex->port_direction = 1;
CodeGen::create_pipeline_stage();
CodeGen::Assimilate::create_pipeline_stage();
CodeGen::Eliminate::create_pipeline_stage();
CodeGen::Externals::create_pipeline_stage();
CodeGen::Import::create_pipeline_stage();
CodeGen::Inventory::create_pipeline_stage();
CodeGen::Labels::create_pipeline_stage();
CodeGen::Link::create_pipeline_stage();
@ -82,32 +63,3 @@ the pipeline:
int CodeGen::Stage::run_stop_stage(pipeline_step *step) {
return FALSE;
}
@ The remaining stages declared here are all just wrappers for features of the
Inter module. (It doesn't seem worth making 10-line sections for each of them.)
=
int CodeGen::Stage::run_show_dependencies_stage(pipeline_step *step) {
Inter::Graph::show_dependencies(step->text_out_file, step->repository);
return TRUE;
}
int CodeGen::Stage::run_log_dependencies_stage(pipeline_step *step) {
Inter::Graph::show_dependencies(DL, step->repository);
return TRUE;
}
int CodeGen::Stage::run_generate_inter_stage(pipeline_step *step) {
Inter::Textual::write(step->text_out_file, step->repository, NULL, 1);
return TRUE;
}
int CodeGen::Stage::run_generate_inter_binary_stage(pipeline_step *step) {
Inter::Binary::write(step->parsed_filename, step->repository);
return TRUE;
}
int CodeGen::Stage::run_summarise_stage(pipeline_step *step) {
Inter::Summary::write(step->text_out_file, step->repository);
return TRUE;
}

View file

@ -0,0 +1,37 @@
[CodeGen::Targets::] Targets.
To create the range of possible targets into which Inter can be converted.
@h Targets.
Single, steel-cut artisanal targets are made here:
=
typedef struct code_generation_target {
struct text_stream *target_name;
MEMORY_MANAGEMENT
} code_generation_target;
code_generation_target *CodeGen::Targets::new(text_stream *name) {
code_generation_target *cgt = CREATE(code_generation_target);
cgt->target_name = Str::duplicate(name);
return cgt;
}
@ And they are mass-produced here:
=
int cgts_made = FALSE;
code_generation_target *binary_inter_cgt = NULL;
code_generation_target *textual_inter_cgt = NULL;
code_generation_target *summary_cgt = NULL;
void CodeGen::Targets::make_targets(void) {
if (cgts_made == FALSE) {
cgts_made = TRUE;
binary_inter_cgt = CodeGen::Targets::new(I"binary");
textual_inter_cgt = CodeGen::Targets::new(I"text");
summary_cgt = CodeGen::Targets::new(I"summary");
CodeGen::create_code_targets();
}
}

View file

@ -493,20 +493,6 @@ inter_symbol *CodeGen::Assimilate::maybe_extern(inter_repository *I, text_stream
int no_assimilated_actions = 0;
void CodeGen::Assimilate::ensure_action(inter_repository *I, inter_reading_state *IRS, text_stream *value) {
if (CodeGen::Link::find_name(I, value, TRUE) == NULL) {
#ifdef CORE_MODULE_XXXXXXX
if (no_assimilated_actions == 0) {
assimilated_actions_b = Packaging::bubble_at(IRS);
assimilated_actions = &assimilated_actions_b;
inter_package *apack = NULL;
inter_package *tpack = Inter::Packages::template(I);
Inter::Defn::set_current_package(&assimilated_actions_b, tpack);
inter_symbol *apack_name = Inter::SymbolsTables::create_with_unique_name(Inter::Packages::scope(tpack), I"actions");
CodeGen::Link::guard(Inter::Package::new_package(&assimilated_actions_b, apack_name,
plain_packagetype, (inter_t) assimilated_actions->latest_indent, NULL, &apack));
Inter::Defn::set_current_package(&assimilated_actions_b, apack);
}
#endif
assimilated_actions = CodeGen::Assimilate::diversion(ACTION_ASSIM_BM);
assimilated_actions->cp_indent = 1;
@ -524,15 +510,12 @@ void CodeGen::Assimilate::ensure_action(inter_repository *I, inter_reading_state
ptype, (inter_t) assimilated_actions->cp_indent + 2, NULL, &housing_package));
Inter::Defn::set_current_package(assimilated_actions, housing_package);
inter_symbol *asymb = CodeGen::Assimilate::maybe_extern(I, value, Inter::Packages::scope(housing_package));
LOG("Well, it's $3\n", asymb);
TEMPORARY_TEXT(unsharped);
WRITE_TO(unsharped, "%SSub", value);
Str::delete_first_character(unsharped);
Str::delete_first_character(unsharped);
inter_symbol *txsymb = CodeGen::Link::find_name(I, unsharped, TRUE);
LOG("Found $3\n", txsymb);
inter_symbol *txsymb = CodeGen::Link::find_name(I, unsharped, TRUE);
inter_symbol *xsymb = Inter::SymbolsTables::create_with_unique_name(Inter::Packages::scope(housing_package), unsharped);
LOG("Made $3\n", xsymb);
if (txsymb) Inter::SymbolsTables::equate(xsymb, txsymb);
DISCARD_TEXT(unsharped);
CodeGen::Link::guard(Inter::Constant::new_numerical(assimilated_actions,

View file

@ -1,142 +0,0 @@
[CodeGen::Import::] Import.
To import inter from a secondary file.
@h Pipeline stage.
=
void CodeGen::Import::create_pipeline_stage(void) {
pipeline_stage *im = CodeGen::Stage::new(I"import", CodeGen::Import::run_pipeline_stage, EXT_FILE_STAGE_ARG);
im->port_direction = -1;
}
int CodeGen::Import::run_pipeline_stage(pipeline_step *step) {
CodeGen::Import::import(step->repository, step->parsed_filename);
return TRUE;
}
@h Link.
=
void CodeGen::Import::import(inter_repository *I, filename *F) {
if (I == NULL) internal_error("no inter to import to");
inter_repository *I2 = Inter::create(2, 1024);
LOG("Import inter file: %f\n", F);
if (Inter::Binary::test_file(F)) Inter::Binary::read(I2, F);
else Inter::Textual::read(I2, F);
inter_frame P;
LOOP_THROUGH_FRAMES(P, I2) {
if (P.data[ID_IFLD] == CONSTANT_IST) {
inter_symbol *con_name = Inter::SymbolsTables::symbol_from_frame_data(P, DEFN_CONST_IFLD);
text_stream *S = con_name->symbol_name;
inter_symbol *already =
Inter::SymbolsTables::symbol_from_name_in_main_or_basics(I, S);
if (already) {
inter_frame P2 = Inter::Symbols::defining_frame(already);
if ((P.data[FORMAT_CONST_IFLD] == CONSTANT_DIRECT) &&
(P2.data[FORMAT_CONST_IFLD] == CONSTANT_DIRECT) &&
(P.data[DATA_CONST_IFLD] == LITERAL_IVAL) &&
(P2.data[DATA_CONST_IFLD] == LITERAL_IVAL) &&
(P.data[DATA_CONST_IFLD+1] == P2.data[DATA_CONST_IFLD+1])) {
Inter::Nop::nop_out(I2, P);
} else {
Inter::Nop::nop_out(I2, P);
}
}
}
}
dictionary *D2 = CodeGen::Import::export_dictionary(I2);
LOOP_THROUGH_FRAMES(P, I)
if (P.data[ID_IFLD] == IMPORT_IST) {
inter_symbol *symbol = Inter::SymbolsTables::symbol_from_frame_data(P, SYMBOL_IMPORT_IFLD);
inter_t ID = P.data[TEXT_IMPORT_IFLD];
text_stream *S = Inter::get_text(P.repo_segment->owning_repo, ID);
dict_entry *de = Dictionaries::find(D2, S);
if (de) {
inter_symbol *symbol2 = (inter_symbol *) Dictionaries::read_value(D2, S);
LOG("My %S == its %S ('%S')\n", symbol?(symbol->symbol_name):I"NULL", symbol2?(symbol2->symbol_name):I"NULL", S);
if ((symbol == NULL) || (symbol2 == NULL)) internal_error("null import/export symbols");
Inter::Symbols::set_bridge(symbol, symbol2);
Inter::Symbols::set_bridge(symbol2, symbol);
} else {
TEMPORARY_TEXT(erm);
WRITE_TO(erm, "It proved impossible to import the rule '%S' (my symbol %S) in the Standard Rules.\n",
S, symbol?(symbol->symbol_name):I"NULL");
WRITE_TO(STDERR, "%S", erm);
internal_error("importation error");
DISCARD_TEXT(erm);
}
}
}
void CodeGen::Import::cmp_symbol(inter_symbol *symbol, inter_symbol *symbol2, text_stream *S) {
if ((symbol) && (symbol2)) {
inter_symbol *cb1 = Inter::Constant::code_block(symbol);
inter_symbol *cb2 = Inter::Constant::code_block(symbol2);
LOG("My CB %S == its CB %S\n", cb1?(cb1->symbol_name):I"NULL", cb2?(cb2->symbol_name):I"NULL");
if ((cb1) && (cb2)) {
inter_frame_list *ifl1 = Inter::Package::code_list(cb1);
inter_frame_list *ifl2 = Inter::Package::code_list(cb2);
if ((ifl1 == NULL) || (ifl2 == NULL)) internal_error("oopsie");
CodeGen::Import::cmp(ifl1, ifl2, S);
}
}
}
void CodeGen::Import::cmp(inter_frame_list *ifl1, inter_frame_list *ifl2, text_stream *S) {
inter_frame X1;
inter_frame X2;
if ((ifl1 == NULL) || (ifl2 == NULL)) { LOG("Null IFLs mean no match\n"); return; }
inter_frame_list_entry *ifl2_entry = ifl2->first_in_ifl;
int N = 0;
LOOP_THROUGH_INTER_FRAME_LIST(X1, ifl1) {
N++;
if (Inter::Frame::valid(((X2 = ifl2_entry->listed_frame), &X2))) {
if (X1.data[ID_IFLD] != X2.data[ID_IFLD]) {
internal_error("nonmatching ilds");
}
LOG("%d: %d\n", N, X1.data[ID_IFLD]);
Inter::Defn::write_construct_text(DL, X1);
if (X1.data[ID_IFLD] == LABEL_IST) {
inter_frame_list *lifl1 = Inter::find_frame_list(X1.repo_segment->owning_repo, X1.data[CODE_LABEL_IFLD]);
inter_frame_list *lifl2 = Inter::find_frame_list(X2.repo_segment->owning_repo, X2.data[CODE_LABEL_IFLD]);
CodeGen::Import::cmp(lifl1, lifl2, S);
}
if (X1.data[ID_IFLD] == SPLAT_IST) {
text_stream *S1 = Inter::get_text(X1.repo_segment->owning_repo, X1.data[MATTER_SPLAT_IFLD]);
text_stream *S2 = Inter::get_text(X2.repo_segment->owning_repo, X2.data[MATTER_SPLAT_IFLD]);
if (Str::ne(S1, S2)) {
LOG("Ooops: S1 = %S\nS2 = %S\n", S1, S2);
WRITE_TO(STDERR, "Bad match: %S\nInternal: %S\nExternal: %S\n", S, S1, S2);
internal_error("no match");
} else {
LOG("They match! %d\n", Str::len(S1));
}
}
} else internal_error("diff lengths");
ifl2_entry = ifl2_entry->next_in_ifl;
}
LOG("Scanned IFL size %d\n", N);
}
dictionary *CodeGen::Import::export_dictionary(inter_repository *I) {
dictionary *D = Dictionaries::new(INITIAL_INTER_SYMBOLS_ID_RANGE, FALSE);
inter_frame P;
LOOP_THROUGH_FRAMES(P, I)
if (P.data[ID_IFLD] == EXPORT_IST) {
inter_symbol *symbol = Inter::SymbolsTables::symbol_from_frame_data(P, SYMBOL_EXPORT_IFLD);
inter_t ID = P.data[TEXT_EXPORT_IFLD];
text_stream *S = Inter::get_text(P.repo_segment->owning_repo, ID);
Dictionaries::create(D, S);
Dictionaries::write_value(D, S, (void *) symbol);
}
return D;
}

View file

@ -6,18 +6,30 @@ To generate I6 code from intermediate code.
=
void CodeGen::create_pipeline_stage(void) {
CodeGen::Stage::new(I"generate-i6", CodeGen::run_pipeline_stage, TEXT_OUT_STAGE_ARG);
CodeGen::Stage::new(I"generate", CodeGen::run_pipeline_stage, TEXT_OUT_STAGE_ARG);
}
code_generation_target *Inform_6_cgt = NULL;
void CodeGen::create_code_targets(void) {
Inform_6_cgt = CodeGen::Targets::new(I"inform6");
}
int CodeGen::run_pipeline_stage(pipeline_step *step) {
CodeGen::to_I6(step->repository, step->text_out_file);
if (step->target_argument == NULL) internal_error("no target specified");
if (step->target_argument == binary_inter_cgt)
Inter::Binary::write(step->parsed_filename, step->repository);
else if (step->target_argument == textual_inter_cgt)
Inter::Textual::write(step->text_out_file, step->repository, NULL, 1);
else if (step->target_argument == summary_cgt)
Inter::Summary::write(step->text_out_file, step->repository);
else CodeGen::generate(step);
return TRUE;
}
@h Hello.
@d MAX_REPOS_AT_ONCE 8
=
typedef struct text_literal_holder {
struct text_stream *definition_code;
@ -32,38 +44,15 @@ int the_quartet_found = TRUE;
int the_quartet_found = FALSE;
#endif
void CodeGen::to_I6(inter_repository *I, OUTPUT_STREAM) {
void CodeGen::generate(pipeline_step *step) {
inter_repository *I = step->repository;
text_stream *OUT = step->text_out_file;
if (I == NULL) internal_error("no inter to generate from");
inter_repository *repos[MAX_REPOS_AT_ONCE];
int no_repos = CodeGen::repo_list(I, repos);
CodeGen::Var::set_translates(I);
for (int j=0; j<no_repos; j++) {
inter_repository *I = repos[j];
inter_frame P;
LOOP_THROUGH_FRAMES(P, I)
if (P.data[ID_IFLD] == IMPORT_IST) {
inter_symbol *imp_name = Inter::SymbolsTables::symbol_from_frame_data(P, SYMBOL_IMPORT_IFLD);
inter_symbol *exp_name = Inter::Symbols::get_bridge(imp_name);
if (exp_name) {
inter_repository *repo = Inter::Symbols::defining_frame(exp_name).repo_segment->owning_repo;
int found = FALSE;
for (int i=0; i<no_repos; i++) if (repos[i] == repo) found = TRUE;
if (found == FALSE) {
if (no_repos >= MAX_REPOS_AT_ONCE)
internal_error("too many repos to import");
repos[no_repos++] = repo;
}
}
}
}
for (int j=0; j<no_repos; j++) {
inter_repository *I = repos[j];
CodeGen::Var::set_translates(I);
}
LOG("Generating I6 from %d repository/ies\n", no_repos);
LOG("Generating to %S\n", step->target_argument->target_name);
Inter::Symbols::clear_transient_flags();
@ -76,11 +65,10 @@ void CodeGen::to_I6(inter_repository *I, OUTPUT_STREAM) {
text_stream *code_at_eof = Str::new();
text_stream *verbs_at_eof = Str::new();
text_stream *routines_at_eof = Str::new();
text_stream *text_literals_code = Str::new();
int properties_written = FALSE;
int variables_written = FALSE;
for (int j=0; j<no_repos; j++) {
inter_repository *I = repos[j];
inter_frame P;
LOOP_THROUGH_FRAMES(P, I) {
inter_package *outer = Inter::Packages::container(P);
@ -90,13 +78,10 @@ void CodeGen::to_I6(inter_repository *I, OUTPUT_STREAM) {
case CONSTANT_IST: {
inter_symbol *con_name =
Inter::SymbolsTables::symbol_from_frame_data(P, DEFN_CONST_IFLD);
if ((outer) && (CodeGen::Eliminate::gone(outer->package_name)) && (Inter::Constant::code_block(con_name) == NULL)) {
LOG("Yeah, so reject $3\n", outer->package_name);
continue;
}
if ((outer) && (CodeGen::Eliminate::gone(outer->package_name)) && (Inter::Constant::code_block(con_name) == NULL)) {
LOG("Yeah, so reject $3\n", outer->package_name);
continue;
}
if (Inter::Symbols::read_annotation(con_name, OBJECT_IANN) == 1) break;
if (Inter::Packages::container(P) == Inter::Packages::main(I)) {
WRITE_TO(STDERR, "Bad constant: %S\n", con_name->symbol_name);
@ -133,63 +118,25 @@ void CodeGen::to_I6(inter_repository *I, OUTPUT_STREAM) {
@<Property knowledge@>;
break;
case VARIABLE_IST:
if ((outer) && (CodeGen::Eliminate::gone(outer->package_name))) {
LOG("Yeah, so reject $3\n", outer->package_name);
continue;
}
if ((outer) && (CodeGen::Eliminate::gone(outer->package_name))) {
LOG("Yeah, so reject $3\n", outer->package_name);
continue;
}
if (variables_written == FALSE) {
variables_written = TRUE;
CodeGen::Var::knowledge(TO, I);
}
break;
case IMPORT_IST: {
inter_symbol *imp_name =
Inter::SymbolsTables::symbol_from_frame_data(P, SYMBOL_IMPORT_IFLD);
inter_symbol *exp_name = Inter::Symbols::get_bridge(imp_name);
if (exp_name) {
WRITE_TO(early_matter, "Constant %S = %S;\n", CodeGen::name(imp_name), CodeGen::name(exp_name));
}
break;
}
}
}
}
}
int NR = 0;
for (int j=0; j<no_repos; j++) {
inter_repository *I = repos[j];
inter_frame P;
LOOP_THROUGH_FRAMES(P, I) {
if (P.data[ID_IFLD] == RESPONSE_IST) {
inter_symbol *resp_name = Inter::SymbolsTables::symbol_from_frame_data(P, DEFN_RESPONSE_IFLD);
WRITE_TO(early_matter, "Constant %S = %d;\n", CodeGen::name(resp_name), ++NR);
}
}
}
if (NR > 0) {
WRITE_TO(early_matter, "Constant NO_RESPONSES = %d;\n", NR);
WRITE_TO(main_matter, "Array ResponseTexts --> ");
for (int j=0; j<no_repos; j++) {
inter_repository *I = repos[j];
inter_frame P;
LOOP_THROUGH_FRAMES(P, I) {
if (P.data[ID_IFLD] == RESPONSE_IST) {
NR++;
CodeGen::literal(main_matter, I, NULL, Inter::Packages::scope_of(P), P.data[VAL1_RESPONSE_IFLD], P.data[VAL1_RESPONSE_IFLD+1], FALSE);
WRITE_TO(main_matter, " ");
}
}
}
WRITE_TO(main_matter, "0 0;\n");
}
@<Define constants for the responses@>;
if (NR > 0) @<Define an array of the responses@>;
if (properties_written == FALSE) { text_stream *TO = main_matter; @<Property knowledge@>; }
WRITE("%S", pragmatic_matter);
WRITE("%S", attributes_at_eof);
WRITE("%S", early_matter);
int no_tlh = NUMBER_CREATED(text_literal_holder);
text_literal_holder **sorted = (text_literal_holder **)
(Memory::I7_calloc(no_tlh, sizeof(text_literal_holder *), CODE_GENERATION_MREASON));
@ -201,19 +148,44 @@ void CodeGen::to_I6(inter_repository *I, OUTPUT_STREAM) {
CodeGen::compare_tlh);
for (int i=0; i<no_tlh; i++) {
text_literal_holder *tlh = sorted[i];
WRITE("! TLH %d <%S>\n", tlh->allocation_id, tlh->literal_content);
WRITE("%S", tlh->definition_code);
WRITE_TO(text_literals_code, "! TLH %d <%S>\n", tlh->allocation_id, tlh->literal_content);
WRITE_TO(text_literals_code, "%S", tlh->definition_code);
}
WRITE("%S", pragmatic_matter);
WRITE("%S", attributes_at_eof);
WRITE("%S", early_matter);
WRITE("%S", text_literals_code);
WRITE("%S", summations_at_eof);
WRITE("%S", arrays_at_eof);
WRITE("%S", main_matter);
WRITE("%S", routines_at_eof);
WRITE("%S", code_at_eof);
WRITE("%S", verbs_at_eof);
}
@<Define constants for the responses@> =
inter_frame P;
LOOP_THROUGH_FRAMES(P, I) {
if (P.data[ID_IFLD] == RESPONSE_IST) {
inter_symbol *resp_name = Inter::SymbolsTables::symbol_from_frame_data(P, DEFN_RESPONSE_IFLD);
WRITE_TO(early_matter, "Constant %S = %d;\n", CodeGen::name(resp_name), ++NR);
}
}
@<Define an array of the responses@> =
WRITE_TO(early_matter, "Constant NO_RESPONSES = %d;\n", NR);
WRITE_TO(main_matter, "Array ResponseTexts --> ");
inter_frame P;
LOOP_THROUGH_FRAMES(P, I) {
if (P.data[ID_IFLD] == RESPONSE_IST) {
NR++;
CodeGen::literal(main_matter, I, NULL, Inter::Packages::scope_of(P), P.data[VAL1_RESPONSE_IFLD], P.data[VAL1_RESPONSE_IFLD+1], FALSE);
WRITE_TO(main_matter, " ");
}
}
WRITE_TO(main_matter, "0 0;\n");
@<Property knowledge@> =
if (properties_written == FALSE) {
if (the_quartet_found) {
@ -227,37 +199,6 @@ void CodeGen::to_I6(inter_repository *I, OUTPUT_STREAM) {
}
@ =
int CodeGen::repo_list(inter_repository *I, inter_repository **repos) {
int no_repos = 0;
repos[no_repos++] = I;
for (int j=0; j<no_repos; j++) {
inter_repository *J = repos[j];
inter_frame P;
LOOP_THROUGH_FRAMES(P, J)
if (P.data[ID_IFLD] == IMPORT_IST) {
inter_symbol *imp_name = Inter::SymbolsTables::symbol_from_frame_data(P, SYMBOL_IMPORT_IFLD);
inter_symbol *exp_name = Inter::Symbols::get_bridge(imp_name);
if (exp_name) {
inter_repository *repo = Inter::Symbols::defining_frame(exp_name).repo_segment->owning_repo;
int found = FALSE;
for (int i=0; i<no_repos; i++) if (repos[i] == repo) found = TRUE;
if (found == FALSE) {
if (no_repos >= MAX_REPOS_AT_ONCE)
internal_error("too many repos to import");
repos[no_repos++] = repo;
}
}
}
}
for (int j=0; j<no_repos; j++) {
inter_repository *J = repos[j];
if (J != I) J->main_repo = I;
}
return no_repos;
}
int query_labels_mode = FALSE, negate_label_mode = FALSE;
void CodeGen::frame(OUTPUT_STREAM, inter_repository *I, inter_frame P) {
switch (P.data[ID_IFLD]) {

View file

@ -8,10 +8,10 @@ Chapter 1: Setting Up
"Loading this module."
Codegen Module
Stages
Targets
Pipelines
Chapter 2: Linking
Import
Linker
Template Reader
Parse Linked Matter

View file

@ -113,8 +113,6 @@ void Inter::Defn::create_language(void) {
Inter::Symbol::define();
Inter::Version::define();
Inter::Pragma::define();
Inter::Import::define();
Inter::Export::define();
Inter::Link::define();
Inter::Append::define();
Inter::Kind::define();

View file

@ -1,75 +0,0 @@
[Inter::Export::] The Export Construct.
Defining the export construct.
@
@e EXPORT_IST
@d SYMBOL_EXPORT_IFLD 2
@d TEXT_EXPORT_IFLD 3
@d EXTENT_EXPORT_IFR 4
=
void Inter::Export::define(void) {
Inter::Defn::create_construct(
EXPORT_IST,
L"export (%i+) \"(%c+)\"",
&Inter::Export::read,
NULL,
&Inter::Export::verify,
&Inter::Export::write,
NULL,
NULL,
NULL,
NULL,
NULL,
I"export", I"exports");
}
inter_error_message *Inter::Export::read(inter_reading_state *IRS, inter_line_parse *ilp, inter_error_location *eloc) {
inter_error_message *E = Inter::Defn::vet_level(IRS, EXPORT_IST, ilp->indent_level, eloc);
if (E) return E;
if (ilp->no_annotations > 0) return Inter::Errors::plain(I"__annotations are not allowed", eloc);
inter_symbol *symbol = Inter::SymbolsTables::symbol_from_name(Inter::Bookmarks::scope(IRS), ilp->mr.exp[0]);
if (symbol == NULL) return Inter::Errors::plain(I"no such symbol", eloc);
inter_t ID = Inter::create_text(IRS->read_into);
E = Inter::Constant::parse_text(Inter::get_text(IRS->read_into, ID), ilp->mr.exp[1], 0, Str::len(ilp->mr.exp[1]), eloc);
if (E) return E;
return Inter::Export::new(IRS, symbol, ID, (inter_t) ilp->indent_level, eloc);
}
inter_error_message *Inter::Export::new(inter_reading_state *IRS, inter_symbol *symbol, inter_t translate_text, inter_t level, struct inter_error_location *eloc) {
inter_frame P = Inter::Frame::fill_2(IRS, EXPORT_IST, Inter::SymbolsTables::id_from_IRS_and_symbol(IRS, symbol), translate_text, eloc, level);
inter_error_message *E = Inter::Defn::verify_construct(P); if (E) return E;
Inter::Frame::insert(P, IRS);
return NULL;
}
inter_error_message *Inter::Export::verify(inter_frame P) {
inter_t vcount = P.repo_segment->bytecode[P.index + PREFRAME_VERIFICATION_COUNT]++;
if (P.extent != EXTENT_EXPORT_IFR) return Inter::Frame::error(&P, I"extent wrong", NULL);
inter_symbol *symbol = Inter::SymbolsTables::symbol_from_frame_data(P, SYMBOL_EXPORT_IFLD);
if (symbol == NULL) return Inter::Frame::error(&P, I"no target name", NULL);
if (P.data[TEXT_EXPORT_IFLD] == 0) return Inter::Frame::error(&P, I"no translation text", NULL);
if (vcount == 0) {
inter_t ID = P.data[TEXT_EXPORT_IFLD];
text_stream *S = Inter::get_text(P.repo_segment->owning_repo, ID);
Inter::Symbols::set_export_name(symbol, S);
}
return NULL;
}
inter_error_message *Inter::Export::write(OUTPUT_STREAM, inter_frame P) {
inter_symbol *symbol = Inter::SymbolsTables::symbol_from_frame_data(P, SYMBOL_EXPORT_IFLD);
inter_t ID = P.data[TEXT_EXPORT_IFLD];
text_stream *S = Inter::get_text(P.repo_segment->owning_repo, ID);
WRITE("export %S \"%S\"", symbol->symbol_name, S);
return NULL;
}

View file

@ -1,76 +0,0 @@
[Inter::Import::] The Import Construct.
Defining the import construct.
@
@e IMPORT_IST
@d SYMBOL_IMPORT_IFLD 2
@d TEXT_IMPORT_IFLD 3
@d EXTENT_IMPORT_IFR 4
=
void Inter::Import::define(void) {
Inter::Defn::create_construct(
IMPORT_IST,
L"import (%i+) \"(%c+)\"",
&Inter::Import::read,
NULL,
&Inter::Import::verify,
&Inter::Import::write,
NULL,
NULL,
NULL,
NULL,
NULL,
I"import", I"imports");
}
inter_error_message *Inter::Import::read(inter_reading_state *IRS, inter_line_parse *ilp, inter_error_location *eloc) {
inter_error_message *E = Inter::Defn::vet_level(IRS, IMPORT_IST, ilp->indent_level, eloc);
if (E) return E;
if (ilp->no_annotations > 0) return Inter::Errors::plain(I"__annotations are not allowed", eloc);
inter_symbol *symbol = Inter::SymbolsTables::symbol_from_name(Inter::Bookmarks::scope(IRS), ilp->mr.exp[0]);
if (symbol == NULL) return Inter::Errors::plain(I"no such symbol", eloc);
inter_t ID = Inter::create_text(IRS->read_into);
E = Inter::Constant::parse_text(Inter::get_text(IRS->read_into, ID), ilp->mr.exp[1], 0, Str::len(ilp->mr.exp[1]), eloc);
if (E) return E;
return Inter::Import::new(IRS, symbol, ID, (inter_t) ilp->indent_level, eloc);
}
inter_error_message *Inter::Import::new(inter_reading_state *IRS, inter_symbol *symbol, inter_t translate_text, inter_t level, struct inter_error_location *eloc) {
inter_frame P = Inter::Frame::fill_2(IRS, IMPORT_IST, Inter::SymbolsTables::id_from_IRS_and_symbol(IRS, symbol), translate_text, eloc, level);
inter_error_message *E = Inter::Defn::verify_construct(P); if (E) return E;
Inter::Frame::insert(P, IRS);
symbol->importation_frame = P;
return NULL;
}
inter_error_message *Inter::Import::verify(inter_frame P) {
inter_t vcount = P.repo_segment->bytecode[P.index + PREFRAME_VERIFICATION_COUNT]++;
if (P.extent != EXTENT_IMPORT_IFR) return Inter::Frame::error(&P, I"extent wrong", NULL);
inter_symbol *symbol = Inter::SymbolsTables::symbol_from_frame_data(P, SYMBOL_IMPORT_IFLD);
if (symbol == NULL) return Inter::Frame::error(&P, I"no target name", NULL);
if (P.data[TEXT_IMPORT_IFLD] == 0) return Inter::Frame::error(&P, I"no translation text", NULL);
if (vcount == 0) {
inter_t ID = P.data[TEXT_IMPORT_IFLD];
text_stream *S = Inter::get_text(P.repo_segment->owning_repo, ID);
Inter::Symbols::set_export_name(symbol, S);
}
return NULL;
}
inter_error_message *Inter::Import::write(OUTPUT_STREAM, inter_frame P) {
inter_symbol *symbol = Inter::SymbolsTables::symbol_from_frame_data(P, SYMBOL_IMPORT_IFLD);
inter_t ID = P.data[TEXT_IMPORT_IFLD];
text_stream *S = Inter::get_text(P.repo_segment->owning_repo, ID);
WRITE("import %S \"%S\"", symbol->symbol_name, S);
return NULL;
}

View file

@ -33,8 +33,6 @@ Chapter 4: Void Constructs
The Metadata Construct
The Marker Construct
The Symbol Construct
The Import Construct
The Export Construct
The Version Construct
The Pragma Construct
The Link Construct

View file

@ -508,3 +508,4 @@ Use MAX_LOCAL_VARIABLES of 256.