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:
parent
04aef17c9f
commit
be07096f1f
|
@ -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>§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>
|
||||
|
|
|
@ -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">§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>§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">>step_stage</span><span class="plain">-</span><span class="element">>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">>step_stage</span><span class="plain">-</span><span class="element">>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">>step_stage</span><span class="plain">-</span><span class="element">>stage_name</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>step_argument</span><span class="plain">);</span>
|
||||
<span class="identifier">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">>step_stage</span><span class="plain">-</span><span class="element">>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">>step_stage</span><span class="plain">-</span><span class="element">>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">>target_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">>target_argument</span><span class="plain">-</span><span class="element">>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">>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">(&</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">(&</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*) *-> *(%c*)"</span><span class="plain">)) {</span>
|
||||
<span class="identifier">ST</span><span class="plain">-</span><span class="element">>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">>target_name</span><span class="plain">))</span>
|
||||
<span class="identifier">ST</span><span class="plain">-</span><span class="element">>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">>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">>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">>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">>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">(&</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">>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">>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">>stage_name</span><span class="plain">))</span>
|
||||
<span class="identifier">ST</span><span class="plain">-</span><span class="element">>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">>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">>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">(&</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 -> *"</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">(&</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">(&</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">>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">>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">>step_stage</span><span class="plain">-</span><span class="element">>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">>step_stage</span><span class="plain">-</span><span class="element">>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">§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>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<!--Weave of '1/stg' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../webs.html">★</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">§1. Stages</a></li><li><a href="#SP3">§3. Creation</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="#SP1">§1. Stages</a></li><li><a href="#SP2">§2. Creation</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§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">>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">>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">>port_direction</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">stage</span><span class="plain">-</span><span class="element">>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">§3</a>, 2/imp (<a href="2-imp.html#SP1">§1</a>), 2/lnk (<a href="2-lnk.html#SP1">§1</a>), 2/plm (<a href="2-plm.html#SP1">§1</a>), 2/rcc (<a href="2-rcc.html#SP1">§1</a>), 2/alm (<a href="2-alm.html#SP1">§1</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 2/unq (<a href="2-unq.html#SP1">§1</a>), 2/rv (<a href="2-rv.html#SP1">§1</a>), 2/erm (<a href="2-erm.html#SP1">§1</a>), 2/erl (<a href="2-erl.html#SP1">§1</a>), 2/inv (<a href="2-inv.html#SP1">§1</a>), 4/cg (<a href="4-cg.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Stage::new is used in <a href="#SP2">§2</a>, 2/lnk (<a href="2-lnk.html#SP1">§1</a>), 2/plm (<a href="2-plm.html#SP1">§1</a>), 2/rcc (<a href="2-rcc.html#SP1">§1</a>), 2/alm (<a href="2-alm.html#SP1">§1</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 2/unq (<a href="2-unq.html#SP1">§1</a>), 2/rv (<a href="2-rv.html#SP1">§1</a>), 2/erm (<a href="2-erm.html#SP1">§1</a>), 2/erl (<a href="2-erl.html#SP1">§1</a>), 2/inv (<a href="2-inv.html#SP1">§1</a>), 4/cg (<a href="4-cg.html#SP1">§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>§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">>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">§3</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§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>§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">>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">§3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>The "stop" stage is special, in that it always returns false, thus stopping
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§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">§3</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§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">>text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain">);</span>
|
||||
<span class="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">>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">>text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, 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">>parsed_filename</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain">);</span>
|
||||
<span class="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">>text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain">);</span>
|
||||
<span class="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">§3</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Stage::run_log_dependencies_stage is used in <a href="#SP3">§3</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Stage::run_generate_inter_stage is used in <a href="#SP3">§3</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Stage::run_generate_inter_binary_stage is used in <a href="#SP3">§3</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Stage::run_summarise_stage is used in <a href="#SP3">§3</a>.</p>
|
||||
<p class="endnote">The function CodeGen::Stage::run_stop_stage is used in <a href="#SP2">§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>
|
||||
|
|
70
docs/codegen-module/1-trg.html
Normal file
70
docs/codegen-module/1-trg.html
Normal 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">★</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">§1. Targets</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§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">>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">§2</a>, 4/cg (<a href="4-cg.html#SP1">§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>§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">§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>
|
||||
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Assimilate::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§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"> = &</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">(&</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">(&</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">-></span><span class="identifier">latest_indent</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, &</span><span class="identifier">apack</span><span class="plain">));</span>
|
||||
<span class="identifier">Inter::Defn::set_current_package</span><span class="plain">(&</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">-></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">-></span><span class="identifier">cp_indent</span><span class="plain"> + 2, </span><span class="identifier">NULL</span><span class="plain">, &</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>
|
||||
|
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Labels::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Labels::run_pipeline_stage appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Eliminate::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Eliminate::run_pipeline_stage appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Inventory::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Inventory::run_pipeline_stage appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Link::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§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">§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>
|
||||
|
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::PLM::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::PLM::run_pipeline_stage appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::RCC::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::RCC::run_pipeline_stage appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Externals::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Externals::run_pipeline_stage appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::ReconcileVerbs::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::ReconcileVerbs::run_pipeline_stage appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Uniqueness::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Uniqueness::run_pipeline_stage appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">>repository</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>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">>target_argument</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no target specified"</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">step</span><span class="plain">-</span><span class="element">>target_argument</span><span class="plain"> == </span><span class="identifier">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">>parsed_filename</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain">);</span>
|
||||
<span class="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">>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">>text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, 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">>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">>text_out_file</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain">);</span>
|
||||
<span class="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">§3</a>).</p>
|
||||
<p class="endnote">The function CodeGen::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::create_code_targets is used in 1/trg (<a href="1-trg.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::run_pipeline_stage appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§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">>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">>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"><</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">-></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"><</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"> >= </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"><</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">>target_argument</span><span class="plain">-</span><span class="element">>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"><</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">) && (</span><span class="functiontext">CodeGen::Eliminate::gone</span><span class="plain">(</span><span class="identifier">outer</span><span class="plain">-></span><span class="identifier">package_name</span><span class="plain">)) && (</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">-></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">) && (</span><span class="functiontext">CodeGen::Eliminate::gone</span><span class="plain">(</span><span class="identifier">outer</span><span class="plain">-></span><span class="identifier">package_name</span><span class="plain">)) && (</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">-></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">-></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>
|
||||
<<span class="cwebmacro">Property knowledge</span> <span class="cwebmacronumber">2.1</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Property knowledge</span> <span class="cwebmacronumber">2.3</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">VARIABLE_IST</span><span class="plain">:</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">outer</span><span class="plain">) && (</span><span class="functiontext">CodeGen::Eliminate::gone</span><span class="plain">(</span><span class="identifier">outer</span><span class="plain">-></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">-></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">) && (</span><span class="functiontext">CodeGen::Eliminate::gone</span><span class="plain">(</span><span class="identifier">outer</span><span class="plain">-></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">-></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"><</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"> > 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 --> "</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"><</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>
|
||||
<<span class="cwebmacro">Define constants for the responses</span> <span class="cwebmacronumber">2.1</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NR</span><span class="plain"> > 0) </span><<span class="cwebmacro">Define an array of the responses</span> <span class="cwebmacronumber">2.2</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><<span class="cwebmacro">Property knowledge</span> <span class="cwebmacronumber">2.1</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="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><<span class="cwebmacro">Property knowledge</span> <span class="cwebmacronumber">2.3</span>><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"><</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 <%S>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-</span><span class="element">>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">>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 <%S>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">, </span><span class="identifier">tlh</span><span class="plain">-</span><span class="element">>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">>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">§1</a>.</p>
|
||||
<p class="endnote">The function CodeGen::generate is used in <a href="#SP1">§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>§2.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Property knowledge</span> <span class="cwebmacronumber">2.1</span>> =
|
||||
<<span class="cwebmacrodefn">Define constants for the responses</span> <span class="cwebmacronumber">2.1</span>> =
|
||||
</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">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_2"></a><b>§2.2. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Define an array of the responses</span> <span class="cwebmacronumber">2.2</span>> =
|
||||
</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 --> "</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">§2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_3"></a><b>§2.3. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Property knowledge</span> <span class="cwebmacronumber">2.3</span>> =
|
||||
</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"><</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">-></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"><</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"> >= </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"><</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">-></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">§2</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::frame is used in <a href="#SP2">§2</a>, <a href="#SP4">§4</a>, <a href="#SP5">§5</a>, <a href="#SP5_1">§5.1</a>, <a href="#SP5_2">§5.2</a>, <a href="#SP5_4">§5.4</a>, <a href="#SP5_5">§5.5</a>, <a href="#SP5_8">§5.8</a>, <a href="#SP5_9">§5.9</a>, <a href="#SP5_10">§5.10</a>, <a href="#SP5_11">§5.11</a>, <a href="#SP5_12">§5.12</a>, <a href="#SP5_13">§5.13</a>, <a href="#SP5_14">§5.14</a>, <a href="#SP5_15">§5.15</a>, <a href="#SP5_16">§5.16</a>, <a href="#SP5_17">§5.17</a>, <a href="#SP5_18">§5.18</a>, <a href="#SP5_19">§5.19</a>, <a href="#SP5_20">§5.20</a>, <a href="#SP5_21">§5.21</a>, <a href="#SP5_22">§5.22</a>, <a href="#SP5_23">§5.23</a>, <a href="#SP5_24">§5.24</a>, <a href="#SP5_25">§5.25</a>, <a href="#SP5_26">§5.26</a>, <a href="#SP5_27">§5.27</a>, <a href="#SP5_28">§5.28</a>, <a href="#SP5_29">§5.29</a>, <a href="#SP5_30">§5.30</a>, <a href="#SP5_31">§5.31</a>, <a href="#SP5_32">§5.32</a>, <a href="#SP5_33">§5.33</a>, <a href="#SP5_34">§5.34</a>, <a href="#SP5_35">§5.35</a>, <a href="#SP5_36">§5.36</a>, <a href="#SP5_37">§5.37</a>, <a href="#SP5_38">§5.38</a>, <a href="#SP5_39">§5.39</a>, <a href="#SP5_40">§5.40</a>, <a href="#SP5_45">§5.45</a>, <a href="#SP5_46">§5.46</a>, <a href="#SP5_47">§5.47</a>, <a href="#SP5_48">§5.48</a>, <a href="#SP5_49">§5.49</a>, <a href="#SP5_50">§5.50</a>, <a href="#SP5_51">§5.51</a>, <a href="#SP5_52">§5.52</a>, <a href="#SP5_53">§5.53</a>, <a href="#SP5_54">§5.54</a>, <a href="#SP5_55">§5.55</a>, <a href="#SP5_56">§5.56</a>, <a href="#SP5_57">§5.57</a>, <a href="#SP5_58">§5.58</a>, <a href="#SP5_59">§5.59</a>, <a href="#SP5_60">§5.60</a>, <a href="#SP5_61">§5.61</a>, <a href="#SP5_62">§5.62</a>, <a href="#SP5_63">§5.63</a>, <a href="#SP5_64">§5.64</a>, <a href="#SP5_65">§5.65</a>, <a href="#SP5_66">§5.66</a>, <a href="#SP5_67">§5.67</a>, <a href="#SP5_68">§5.68</a>, <a href="#SP5_69">§5.69</a>, <a href="#SP5_70">§5.70</a>, <a href="#SP5_71">§5.71</a>, <a href="#SP5_72">§5.72</a>, <a href="#SP5_73">§5.73</a>, <a href="#SP5_74">§5.74</a>, <a href="#SP5_75">§5.75</a>, <a href="#SP5_76">§5.76</a>, <a href="#SP5_77">§5.77</a>, <a href="#SP5_78">§5.78</a>, <a href="#SP5_79">§5.79</a>, <a href="#SP5_80">§5.80</a>, <a href="#SP5_81">§5.81</a>, <a href="#SP5_82">§5.82</a>, <a href="#SP5_83">§5.83</a>, <a href="#SP5_84">§5.84</a>, <a href="#SP5_85">§5.85</a>, <a href="#SP5_86">§5.86</a>, <a href="#SP5_87">§5.87</a>, <a href="#SP5_88">§5.88</a>, <a href="#SP5_89">§5.89</a>, <a href="#SP5_90">§5.90</a>, <a href="#SP5_91">§5.91</a>, <a href="#SP5_92">§5.92</a>, <a href="#SP5_93">§5.93</a>, <a href="#SP5_94">§5.94</a>, <a href="#SP5_95">§5.95</a>, <a href="#SP5_96">§5.96</a>, <a href="#SP5_97">§5.97</a>, <a href="#SP5_98">§5.98</a>, <a href="#SP5_99">§5.99</a>, <a href="#SP5_100">§5.100</a>, <a href="#SP5_101">§5.101</a>, <a href="#SP5_102">§5.102</a>, <a href="#SP5_103">§5.103</a>, <a href="#SP5_104">§5.104</a>, <a href="#SP5_105">§5.105</a>, <a href="#SP5_106">§5.106</a>, <a href="#SP5_107">§5.107</a>, <a href="#SP5_108">§5.108</a>, <a href="#SP5_109">§5.109</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§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">§3</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::literal is used in <a href="#SP2">§2</a>, <a href="#SP5">§5</a>, 4/iap (<a href="4-iap.html#SP4_8_4_1_1">§4.8.4.1.1</a>, <a href="4-iap.html#SP6">§6</a>), 4/vrb (<a href="4-vrb.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function CodeGen::literal is used in <a href="#SP2_2">§2.2</a>, <a href="#SP5">§5</a>, 4/iap (<a href="4-iap.html#SP4_8_4_1_1">§4.8.4.1.1</a>, <a href="4-iap.html#SP6">§6</a>), 4/vrb (<a href="4-vrb.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::pragma is used in <a href="#SP3">§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">§4.9</a>, <a href="4-iap.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::name is used in <a href="#SP2">§2</a>, <a href="#SP4">§4</a>, <a href="#SP5">§5</a>, 4/iap (<a href="4-iap.html#SP3_5">§3.5</a>, <a href="4-iap.html#SP3_6">§3.6</a>, <a href="4-iap.html#SP4_5">§4.5</a>, <a href="4-iap.html#SP4_7">§4.7</a>, <a href="4-iap.html#SP4_8_4">§4.8.4</a>, <a href="4-iap.html#SP4_9">§4.9</a>, <a href="4-iap.html#SP4_11">§4.11</a>, <a href="4-iap.html#SP4_11_2">§4.11.2</a>, <a href="4-iap.html#SP4_11_2_1">§4.11.2.1</a>, <a href="4-iap.html#SP4_11_2_2">§4.11.2.2</a>, <a href="4-iap.html#SP4_12">§4.12</a>, <a href="4-iap.html#SP5">§5</a>, <a href="4-iap.html#SP6">§6</a>), 4/vrb (<a href="4-vrb.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function CodeGen::name is used in <a href="#SP2_1">§2.1</a>, <a href="#SP4">§4</a>, <a href="#SP5">§5</a>, 4/iap (<a href="4-iap.html#SP3_5">§3.5</a>, <a href="4-iap.html#SP3_6">§3.6</a>, <a href="4-iap.html#SP4_5">§4.5</a>, <a href="4-iap.html#SP4_7">§4.7</a>, <a href="4-iap.html#SP4_8_4">§4.8.4</a>, <a href="4-iap.html#SP4_9">§4.9</a>, <a href="4-iap.html#SP4_11">§4.11</a>, <a href="4-iap.html#SP4_11_2">§4.11.2</a>, <a href="4-iap.html#SP4_11_2_1">§4.11.2.1</a>, <a href="4-iap.html#SP4_11_2_2">§4.11.2.2</a>, <a href="4-iap.html#SP4_12">§4.12</a>, <a href="4-iap.html#SP5">§5</a>, <a href="4-iap.html#SP6">§6</a>), 4/vrb (<a href="4-vrb.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b></p>
|
||||
|
||||
|
|
|
@ -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">§2.1</a>).</p>
|
||||
<p class="endnote">The function CodeGen::IP::knowledge is used in 4/cg (<a href="4-cg.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4_1"></a><b>§4.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Make a list of properties in source order</span> <span class="cwebmacronumber">4.1</span>> =
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">(&</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 -> *"</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>§4.3. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Register command-line arguments</span> <span class="cwebmacronumber">4.3</span>> =
|
||||
|
@ -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">) && (</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">) && (</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) && (</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">§11.2</a>).</p>
|
||||
|
||||
<p class="endnote">The function CoreMain::set_inter_chain_modes is used in <a href="#SP4_1">§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-->
|
||||
|
|
|
@ -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">§6</a>).</p>
|
||||
|
||||
<p class="endnote">The function Locations::set_SR_module is used in 1/mr (<a href="1-mr.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function Locations::set_SR_module appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§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
|
||||
|
|
|
@ -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">) && (</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">>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">>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>
|
||||
|
|
|
@ -747,7 +747,7 @@ do.
|
|||
|
||||
<p class="endnote">The function Rules::shell_iname is used in <a href="#SP22_1">§22.1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Rules::iname is used in <a href="#SP11_2">§11.2</a>, <a href="#SP20_2">§20.2</a>, <a href="#SP20_2_1">§20.2.1</a>, <a href="#SP22">§22</a>, <a href="#SP26">§26</a>, 14/rv (<a href="14-rv.html#SP24_3">§24.3</a>), 17/rs (<a href="17-rs.html#SP7_2">§7.2</a>), 27/ei (<a href="27-ei.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Rules::iname is used in <a href="#SP11_2">§11.2</a>, <a href="#SP20_2">§20.2</a>, <a href="#SP20_2_1">§20.2.1</a>, <a href="#SP22">§22</a>, 14/rv (<a href="14-rv.html#SP24_3">§24.3</a>), 17/rs (<a href="17-rs.html#SP7_2">§7.2</a>), 27/ei (<a href="27-ei.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP20"></a><b>§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">>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">>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">>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">) && (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>do_not_import</span><span class="plain"> == </span><span class="identifier">FALSE</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::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">>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">>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">>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">>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">>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">>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">>rule_extern_iname</span><span class="plain">) && (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>first_applicability_condition</span><span class="plain">))</span>
|
||||
<<span class="cwebmacro">Compile a shell routine to apply conditions to an I6 rule</span> <span class="cwebmacronumber">22.1</span>><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">>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">>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">§22</a>.</p>
|
||||
|
||||
<p class="endnote">The function Rules::export_named_rules is used in 1/mr (<a href="1-mr.html#SP4_14">§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">§5</a>, <a href="17-rs.html#SP7_1">§7.1</a>), 22/pu (<a href="22-pu.html#SP6">§6</a>).</p>
|
||||
|
||||
|
|
|
@ -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">§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">§22</a>), 22/cs (<a href="22-cs.html#SP10_4">§10.4</a>), 22/tp (<a href="22-tp.html#SP9">§9</a>).</p>
|
||||
|
||||
|
|
|
@ -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">(<</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">>, 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>
|
||||
|
||||
|
|
|
@ -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">§1.1.2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::import is used in 21/rl (<a href="21-rl.html#SP22">§22</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::export is used in 21/rl (<a href="21-rl.html#SP26">§26</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::main_scope is used in <a href="#SP2">§2</a>, 13/rsfk (<a href="13-rsfk.html#SP5">§5</a>, <a href="13-rsfk.html#SP24">§24</a>), 27/eis (<a href="27-eis.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::global_scope appears nowhere else.</p>
|
||||
|
|
|
@ -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>§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">§3.6</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Bookmarks::scope is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Bookmarks::scope is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Bookmarks::package appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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>§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">§1</a>), 2/iim (<a href="2-iim.html#SP3">§3</a>, <a href="2-iim.html#SP4">§4</a>), 2/sym (<a href="2-sym.html#SP2">§2</a>, <a href="2-sym.html#SP4">§4</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::valid is used in <a href="#SP5">§5</a>, 2/iim (<a href="2-iim.html#SP4">§4</a>), 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP3">§3</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::valid is used in <a href="#SP5">§5</a>, 2/iim (<a href="2-iim.html#SP4">§4</a>), 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP3">§3</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::included is used in 2/iim (<a href="2-iim.html#SP4">§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">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::fill_2 is used in 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::fill_2 is used in 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::fill_3 is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§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">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::fill_6 is used in 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::fill_6 is used in 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§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">§1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::insert is used in 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::global_symbols is used in 2/pck (<a href="2-pck.html#SP3">§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">§1</a>), 2/idt (<a href="2-idt.html#SP2">§2</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::error is used in 2/vi (<a href="2-vi.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP2">§2</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::get_comment is used in 2/iibf (<a href="2-iibf.html#SP1_1_5">§1.1.5</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>).</p>
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Types::create is used in <a href="#SP4">§4</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Types::is_enumerated is used in <a href="#SP3">§3</a>, 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Types::is_enumerated is used in <a href="#SP3">§3</a>, 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Types::find_by_ID is used in 2/vi (<a href="2-vi.html#SP1">§1</a>), 4/tkc (<a href="4-tkc.html#SP2">§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">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Types::write is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Types::read is used in 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Types::read is used in 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Types::read_I6_decimal appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -106,9 +106,9 @@
|
|||
|
||||
<p class="endnote">The function Inter::Errors::interb_location is used in 2/iim (<a href="2-iim.html#SP4">§4</a>), 2/iibf (<a href="2-iibf.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::quoted is used in 2/st (<a href="2-st.html#SP11">§11</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Errors::quoted is used in 2/st (<a href="2-st.html#SP11">§11</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::plain is used in 2/iibf (<a href="2-iibf.html#SP2">§2</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Errors::plain is used in 2/iibf (<a href="2-iibf.html#SP2">§2</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::issue is used in 2/st (<a href="2-st.html#SP11">§11</a>), 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>, <a href="2-iibf.html#SP2">§2</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>, <a href="2-iitf.html#SP2">§2</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>).</p>
|
||||
|
||||
|
|
|
@ -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>§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">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::create_text is used in 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::create_text is used in 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::get_text is used in 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::get_text is used in 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§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">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::create_frame_list is used in 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b></p>
|
||||
|
||||
|
|
|
@ -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">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Textual::new_symbol is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Textual::find_symbol is used in 2/idt (<a href="2-idt.html#SP3">§3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Textual::find_symbol is used in 2/idt (<a href="2-idt.html#SP3">§3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Textual::find_undefined_symbol is used in 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>).</p>
|
||||
|
||||
|
|
|
@ -214,7 +214,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Packages::scope is used in 2/st (<a href="2-st.html#SP4">§4</a>, <a href="2-st.html#SP5">§5</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP10">§10</a>, <a href="2-st.html#SP11">§11</a>, <a href="2-st.html#SP12">§12</a>), 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">§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">§8</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::scope_of is used in 2/st (<a href="2-st.html#SP8">§8</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::type is used in 3/smm (<a href="3-smm.html#SP1">§1</a>).</p>
|
||||
|
||||
|
|
|
@ -194,7 +194,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name is used in <a href="#SP5">§5</a>, <a href="#SP6">§6</a>, <a href="#SP12">§12</a>, 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name is used in <a href="#SP5">§5</a>, <a href="#SP6">§6</a>, <a href="#SP12">§12</a>, 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§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">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>, <a href="4-tcc2.html#SP3">§3</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_frame_data is used in 3/smm (<a href="3-smm.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>, <a href="4-tcc2.html#SP3">§3</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::global_symbol_from_frame_data is used in 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>).</p>
|
||||
|
||||
|
@ -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">§3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::id_from_IRS_and_symbol is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::id_from_IRS_and_symbol is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP11"></a><b>§11. Equations. </b></p>
|
||||
|
||||
|
|
|
@ -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>§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">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Symbols::defining_frame is used in 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP3">§3</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Symbols::defining_frame is used in 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP3">§3</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>).</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">§1</a>), 4/tec (<a href="4-tec.html#SP1">§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">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Symbols::write_annotations is used in 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b></p>
|
||||
|
||||
|
|
|
@ -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">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Verify::defn is used in 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Verify::local_defn is used in 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Verify::symbol is used in 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Verify::symbol is used in 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Verify::global_symbol is used in 5/tic (<a href="5-tic.html#SP2">§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">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Verify::value is used in 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Verify::value is used in 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Verify::local_value is used in 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
|
||||
|
|
|
@ -117,9 +117,9 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::create_construct is used in <a href="#SP3">§3</a>, 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP1">§1</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP1">§1</a>), 4/tlc (<a href="4-tlc.html#SP1">§1</a>), 4/tac (<a href="4-tac.html#SP1">§1</a>), 4/tpc2 (<a href="4-tpc2.html#SP1">§1</a>), 4/tpc3 (<a href="4-tpc3.html#SP1">§1</a>), 4/tkc (<a href="4-tkc.html#SP1">§1</a>), 4/tdc (<a href="4-tdc.html#SP1">§1</a>), 4/tvc2 (<a href="4-tvc2.html#SP1">§1</a>), 4/tcc2 (<a href="4-tcc2.html#SP1">§1</a>), 4/trc (<a href="4-trc.html#SP1">§1</a>), 4/tic2 (<a href="4-tic2.html#SP1">§1</a>), 4/tpc4 (<a href="4-tpc4.html#SP1">§1</a>), 4/tpc5 (<a href="4-tpc5.html#SP1">§1</a>), 4/tpc6 (<a href="4-tpc6.html#SP1">§1</a>), 4/tpc7 (<a href="4-tpc7.html#SP1">§1</a>), 5/tlc (<a href="5-tlc.html#SP1">§1</a>), 5/tlc2 (<a href="5-tlc2.html#SP1">§1</a>), 5/tic (<a href="5-tic.html#SP1">§1</a>), 5/trc (<a href="5-trc.html#SP1">§1</a>), 5/tvc (<a href="5-tvc.html#SP1">§1</a>), 5/tlc3 (<a href="5-tlc3.html#SP1">§1</a>), 5/tcc (<a href="5-tcc.html#SP1">§1</a>), 5/tec (<a href="5-tec.html#SP1">§1</a>), 5/trc2 (<a href="5-trc2.html#SP1">§1</a>), 5/tcc2 (<a href="5-tcc2.html#SP1">§1</a>), 5/tsc (<a href="5-tsc.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Inter::Defn::create_construct is used in <a href="#SP3">§3</a>, 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP1">§1</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP1">§1</a>), 4/tlc (<a href="4-tlc.html#SP1">§1</a>), 4/tac (<a href="4-tac.html#SP1">§1</a>), 4/tpc2 (<a href="4-tpc2.html#SP1">§1</a>), 4/tpc3 (<a href="4-tpc3.html#SP1">§1</a>), 4/tkc (<a href="4-tkc.html#SP1">§1</a>), 4/tdc (<a href="4-tdc.html#SP1">§1</a>), 4/tvc2 (<a href="4-tvc2.html#SP1">§1</a>), 4/tcc2 (<a href="4-tcc2.html#SP1">§1</a>), 4/trc (<a href="4-trc.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tpc4 (<a href="4-tpc4.html#SP1">§1</a>), 4/tpc5 (<a href="4-tpc5.html#SP1">§1</a>), 4/tpc6 (<a href="4-tpc6.html#SP1">§1</a>), 4/tpc7 (<a href="4-tpc7.html#SP1">§1</a>), 5/tlc (<a href="5-tlc.html#SP1">§1</a>), 5/tlc2 (<a href="5-tlc2.html#SP1">§1</a>), 5/tic (<a href="5-tic.html#SP1">§1</a>), 5/trc (<a href="5-trc.html#SP1">§1</a>), 5/tvc (<a href="5-tvc.html#SP1">§1</a>), 5/tlc3 (<a href="5-tlc3.html#SP1">§1</a>), 5/tcc (<a href="5-tcc.html#SP1">§1</a>), 5/tec (<a href="5-tec.html#SP1">§1</a>), 5/trc2 (<a href="5-trc2.html#SP1">§1</a>), 5/tcc2 (<a href="5-tcc2.html#SP1">§1</a>), 5/tsc (<a href="5-tsc.html#SP1">§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">§1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Defn::verify_construct is used in 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::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">§1</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::vet_level is used in 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Defn::vet_level is used in 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tmc2 (<a href="4-tmc2.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::get_level is used in <a href="#SP3">§3</a>, 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
||||
|
||||
|
|
|
@ -474,7 +474,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Constant::read is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Constant::parse_text is used in 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP1">§1</a>), 4/tec (<a href="4-tec.html#SP1">§1</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Constant::parse_text is used in 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Constant::write_text is used in 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
|
|
|
@ -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">★</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">★</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>§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">&</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">&</span><span class="functiontext">Inter::Instance::read</span><span class="plain">,</span>
|
||||
<span class="identifier">NULL</span><span class="plain">,</span>
|
||||
<span class="plain">&</span><span class="functiontext">Inter::Import::verify</span><span class="plain">,</span>
|
||||
<span class="plain">&</span><span class="functiontext">Inter::Import::write</span><span class="plain">,</span>
|
||||
<span class="plain">&</span><span class="functiontext">Inter::Instance::verify</span><span class="plain">,</span>
|
||||
<span class="plain">&</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">>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">>no_annotations</span><span class="plain"> > 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">>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">>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">>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">>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">>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">>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">>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">>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">(&</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">(&</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">(&</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">>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">>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">>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">&</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">§3</a>).</p>
|
||||
<p class="endnote">The function Inter::Instance::define is used in 3/dfn (<a href="3-dfn.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Import::read appears nowhere else.</p>
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§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">>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">>no_annotations</span><span class="plain"> > 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">>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">(&</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">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], &</span><span class="identifier">E</span><span class="plain">);</span>
|
||||
<span class="reserved">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">>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">, &</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">>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">>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">>read_into</span><span class="plain">, </span><span class="identifier">IRS</span><span class="plain">-</span><span class="element">>current_package</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">vtext</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::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">>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">>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">>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">(&</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">(&</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">>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">(&</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">) && (</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">>symbol_name</span><span class="plain">, </span><span class="identifier">inst_kind</span><span class="plain">-</span><span class="element">>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">>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">(&</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">(&</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">>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">) && (</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">(&</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">(&</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">§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">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Instance::permissions_list is used in 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Instance::write is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Instance::show_dependencies is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Instance::properties_list is used in 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Instance::kind_of is used in 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§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>
|
||||
|
|
|
@ -494,7 +494,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Kind::show_dependencies is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Kind::new_instance is used in 4/tic2 (<a href="4-tic2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Kind::new_instance is used in 4/tic (<a href="4-tic.html#SP2">§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">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Kind::data_type is used in 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic2 (<a href="4-tic2.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Kind::data_type is used in 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Kind::next_enumerated_value is used in 4/tic2 (<a href="4-tic2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Kind::next_enumerated_value is used in 4/tic (<a href="4-tic.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Kind::super is used in 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>).</p>
|
||||
|
||||
|
|
|
@ -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">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§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>
|
||||
|
|
|
@ -128,7 +128,7 @@
|
|||
<p class="endnote">The function Inter::Response::show_dependencies is used in <a href="#SP1">§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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">§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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>§3. The code-generation stages. </b>The following are all experimental, and have probably not yet reached their
|
||||
|
|
|
@ -583,6 +583,7 @@ to the Z-machine, because it's only legal in I6 when compiling to Glulx.
|
|||
|
||||
|
||||
|
||||
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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@> =
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
37
inter/codegen-module/Chapter 1/Targets.w
Normal file
37
inter/codegen-module/Chapter 1/Targets.w
Normal 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();
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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]) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -508,3 +508,4 @@ Use MAX_LOCAL_VARIABLES of 256.
|
|||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue