mirror of
https://github.com/ganelson/inform.git
synced 2024-07-01 06:24:58 +03:00
Limited progress towards a basic_inform library
This commit is contained in:
parent
334464356f
commit
9f70fcd796
|
@ -24,6 +24,7 @@ itself during compilation.
|
|||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">building_site</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">main_package</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">connectors_package</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">assimilation_package</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">opcodes_set</span><span class="plain">[</span><span class="constant">MAX_BIPS</span><span class="plain">];</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_bookmark</span><span class="plain"> </span><span class="identifier">pragmas_bookmark</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_bookmark</span><span class="plain"> </span><span class="identifier">package_types_bookmark</span><span class="plain">;</span>
|
||||
|
@ -74,6 +75,7 @@ itself during compilation.
|
|||
<span class="reserved">building_site</span><span class="plain"> *</span><span class="identifier">B</span><span class="plain"> = &(</span><span class="identifier">I</span><span class="plain">-></span><span class="identifier">site</span><span class="plain">);</span>
|
||||
<span class="identifier">B</span><span class="plain">-</span><span class="element">>main_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">B</span><span class="plain">-</span><span class="element">>connectors_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">B</span><span class="plain">-</span><span class="element">>assimilation_package</span><span class="plain"> = </span><span class="identifier">NULL</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="constant">MAX_BIPS</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">B</span><span class="plain">-</span><span class="element">>opcodes_set</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">B</span><span class="plain">-</span><span class="element">>pragmas_bookmark</span><span class="plain"> = </span><span class="identifier">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">B</span><span class="plain">-</span><span class="element">>package_types_bookmark</span><span class="plain"> = </span><span class="identifier">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
|
@ -182,6 +184,30 @@ itself during compilation.
|
|||
<span class="identifier">I</span><span class="plain">-></span><span class="identifier">site</span><span class="element">.connectors_package</span><span class="plain"> = </span><span class="identifier">M</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="functiontext">Site::assimilation_package</span><span class="plain">(</span><span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
|
||||
<span class="reserved">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 tree"</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">I</span><span class="plain">-></span><span class="identifier">site</span><span class="element">.assimilation_package</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="functiontext">Site::ensure_assimilation_package</span><span class="plain">(</span><span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">plain_ptype_symbol</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 tree"</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">site</span><span class="element">.assimilation_package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">main_package</span><span class="plain"> = </span><span class="functiontext">Site::main_package</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">t_p</span><span class="plain"> = </span><span class="identifier">Inter::Packages::by_name</span><span class="plain">(</span><span class="identifier">main_package</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">t_p</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_bookmark</span><span class="plain"> </span><span class="identifier">in_main</span><span class="plain"> = </span><span class="identifier">Inter::Bookmarks::at_end_of_this_package</span><span class="plain">(</span><span class="identifier">main_package</span><span class="plain">);</span>
|
||||
<span class="identifier">t_p</span><span class="plain"> = </span><span class="identifier">CodeGen::Assimilate::new_package_named</span><span class="plain">(&</span><span class="identifier">in_main</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="identifier">plain_ptype_symbol</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">I</span><span class="plain">-></span><span class="identifier">site</span><span class="element">.assimilation_package</span><span class="plain"> = </span><span class="identifier">t_p</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">I</span><span class="plain">-></span><span class="identifier">site</span><span class="element">.assimilation_package</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Site::set_assimilation_package</span><span class="plain">(</span><span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">M</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 tree"</span><span class="plain">);</span>
|
||||
<span class="identifier">I</span><span class="plain">-></span><span class="identifier">site</span><span class="element">.assimilation_package</span><span class="plain"> = </span><span class="identifier">M</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">dictionary</span><span class="plain"> *</span><span class="functiontext">Site::modules_dictionary</span><span class="plain">(</span><span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">I</span><span class="plain">-></span><span class="identifier">site</span><span class="element">.modules_indexed_by_name</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">I</span><span class="plain">-></span><span class="identifier">site</span><span class="element">.modules_indexed_by_name</span><span class="plain"> = </span><span class="identifier">Dictionaries::new</span><span class="plain">(512, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
|
@ -275,6 +301,12 @@ itself during compilation.
|
|||
|
||||
<p class="endnote">The function Site::set_connectors_package appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Site::assimilation_package appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Site::ensure_assimilation_package appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Site::set_assimilation_package appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Site::modules_dictionary is used in 1/pck (<a href="1-pck.html#SP15">§15</a>).</p>
|
||||
|
||||
<p class="endnote">The function Site::main_request is used in 1/pck (<a href="1-pck.html#SP11">§11</a>, <a href="1-pck.html#SP15">§15</a>), 3/pi (<a href="3-pi.html#SP3">§3</a>).</p>
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::Architecture::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">"prepare"</span><span class="plain">, </span><span class="functiontext">CodeGen::Architecture::run_prepare_stage</span><span class="plain">, </span><span class="constant">NO_STAGE_ARG</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"prepare"</span><span class="plain">, </span><span class="functiontext">CodeGen::Architecture::run_prepare_stage</span><span class="plain">, </span><span class="constant">GENERAL_STAGE_ARG</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::Architecture::run_prepare_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>
|
||||
|
@ -139,8 +139,11 @@
|
|||
<span class="identifier">LIST_ICON</span><span class="plain">, 1, </span><span class="identifier">operands</span><span class="plain">,</span>
|
||||
<span class="plain">(</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">Inter::Bookmarks::baseline</span><span class="plain">(&</span><span class="identifier">in_generic</span><span class="plain">) + 1, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">template_p</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">Inter::Package::new_package_named</span><span class="plain">(&</span><span class="identifier">in_main</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">module_name</span><span class="plain">, 1, </span><span class="identifier">NULL</span><span class="plain">, &</span><span class="identifier">template_p</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::ne</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">I</span><span class="string">"none"</span><span class="plain">)) {</span>
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">template_p</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">Inter::Package::new_package_named</span><span class="plain">(&</span><span class="identifier">in_main</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">FALSE</span><span class="plain">, </span><span class="identifier">module_name</span><span class="plain">, 1, </span><span class="identifier">NULL</span><span class="plain">, &</span><span class="identifier">template_p</span><span class="plain">);</span>
|
||||
<span class="identifier">Site::set_assimilation_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">template_p</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">inter_bookmark</span><span class="plain"> *</span><span class="identifier">in_veneer</span><span class="plain"> = </span><span class="identifier">Site::veneer_booknark</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">veneer_p</span><span class="plain"> = </span><span class="identifier">Inter::Packages::veneer</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
|
|
|
@ -35,6 +35,11 @@
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">lib</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">CodeGen::Libraries::URL</span><span class="plain">(</span><span class="reserved">inter_library</span><span class="plain"> *</span><span class="identifier">lib</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lib</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">lib</span><span class="plain">-</span><span class="element">>attachment_point</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::Libraries::read_metadata</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">,</span>
|
||||
<span class="identifier">text_file_position</span><span class="plain"> *</span><span class="identifier">tfp</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_library</span><span class="plain"> *</span><span class="identifier">lib</span><span class="plain"> = (</span><span class="reserved">inter_library</span><span class="plain"> *) </span><span class="identifier">state</span><span class="plain">;</span>
|
||||
|
@ -63,6 +68,8 @@
|
|||
|
||||
<p class="endnote">The function CodeGen::Libraries::new appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Libraries::URL appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Libraries::read_metadata appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Libraries::find appears nowhere else.</p>
|
||||
|
@ -91,6 +98,10 @@
|
|||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Inter::Textual::read</span><span class="plain">(</span><span class="identifier">sidecar</span><span class="plain">, </span><span class="identifier">arch_file</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Inter::Packages::by_url</span><span class="plain">(</span><span class="identifier">sidecar</span><span class="plain">, </span><span class="identifier">req</span><span class="plain">-</span><span class="element">>attachment_point</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"sought attachment material at: %S in %f\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">req</span><span class="plain">-</span><span class="element">>attachment_point</span><span class="plain">, </span><span class="identifier">arch_file</span><span class="plain">);</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unable to find attachment point package"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Inter::Transmigration::move</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">Site::main_package</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">FALSE</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
|
|
|
@ -143,7 +143,7 @@ logging:
|
|||
<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="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">>package_argument</span><span class="plain"> = </span><span class="functiontext">CodeGen::Pipeline::read_parameter</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">D</span><span class="plain">, </span><span class="identifier">tfp</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_argument</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ST</span><span class="plain">-</span><span class="element">>package_argument</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="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="plain">}</span>
|
||||
|
||||
|
@ -416,8 +416,6 @@ logging:
|
|||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">property_ptype_symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">to_phrase_ptype_symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">template_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::Pipeline::prepare_to_run</span><span class="plain">(</span><span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
|
||||
|
||||
<span class="identifier">code_ptype_symbol</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/_code"</span><span class="plain">);</span>
|
||||
|
@ -429,8 +427,6 @@ logging:
|
|||
<span class="identifier">property_ptype_symbol</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/_property"</span><span class="plain">);</span>
|
||||
<span class="identifier">to_phrase_ptype_symbol</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/_to_phrase"</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">template_package</span><span class="plain"> = </span><span class="identifier">Inter::Packages::by_url</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/main/template"</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">unchecked_kind_symbol</span><span class="plain"> = </span><span class="identifier">Inter::Packages::search_resources_exhaustively</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"K_unchecked"</span><span class="plain">);</span>
|
||||
<span class="identifier">unchecked_function_symbol</span><span class="plain"> = </span><span class="identifier">Inter::Packages::search_resources_exhaustively</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"K_unchecked_function"</span><span class="plain">);</span>
|
||||
<span class="identifier">typeless_int_symbol</span><span class="plain"> = </span><span class="identifier">Inter::Packages::search_resources_exhaustively</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"K_typeless_int"</span><span class="plain">);</span>
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
<span class="identifier">no_assimilated_commands</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">no_assimilated_arrays</span><span class="plain"> = 0;</span>
|
||||
|
||||
<span class="identifier">Site::ensure_assimilation_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">plain_ptype_symbol</span><span class="plain">);</span>
|
||||
|
||||
<span class="functiontext">CodeGen::Assimilate::ensure</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, &</span><span class="identifier">verb_directive_reverse_symbol</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"VERB_DIRECTIVE_REVERSE"</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::Assimilate::ensure</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, &</span><span class="identifier">verb_directive_slash_symbol</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"VERB_DIRECTIVE_SLASH"</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::Assimilate::ensure</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, &</span><span class="identifier">verb_directive_divider_symbol</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"VERB_DIRECTIVE_DIVIDER"</span><span class="plain">);</span>
|
||||
|
@ -82,6 +84,7 @@
|
|||
<pre class="display">
|
||||
<span class="identifier">inter_bookmark</span><span class="plain"> </span><span class="functiontext">CodeGen::Assimilate::template_submodule</span><span class="plain">(</span><span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">inter_tree_node</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">submodule_ptype_symbol</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">template_package</span><span class="plain"> = </span><span class="identifier">Site::ensure_assimilation_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">plain_ptype_symbol</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">t_p</span><span class="plain"> = </span><span class="identifier">Inter::Packages::by_name</span><span class="plain">(</span><span class="identifier">template_package</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">t_p</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_bookmark</span><span class="plain"> </span><span class="identifier">IBM</span><span class="plain"> = </span><span class="identifier">Inter::Bookmarks::after_this_node</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
|
||||
|
@ -609,7 +612,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Assimilate::new_package_named is used in <a href="#SP2">§2</a>, <a href="#SP2_1_2">§2.1.2</a>, <a href="#SP2_2_2">§2.2.2</a>, <a href="#SP4">§4</a>, 2/lnk (<a href="2-lnk.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Assimilate::new_package_named is used in <a href="#SP2">§2</a>, <a href="#SP2_1_2">§2.1.2</a>, <a href="#SP2_2_2">§2.2.2</a>, <a href="#SP4">§4</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Assimilate::install_socket is used in <a href="#SP2_1_2">§2.1.2</a>, <a href="#SP2_2_2">§2.2.2</a>.</p>
|
||||
|
||||
|
@ -939,6 +942,7 @@
|
|||
<span class="identifier">Produce::push_code_position</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">Produce::new_cip</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, &(</span><span class="identifier">req</span><span class="plain">-</span><span class="element">>position</span><span class="plain">)), </span><span class="identifier">Inter::Bookmarks::snapshot</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">)));</span>
|
||||
<span class="identifier">value_holster</span><span class="plain"> </span><span class="identifier">VH</span><span class="plain"> = </span><span class="identifier">Holsters::new</span><span class="plain">(</span><span class="identifier">INTER_VOID_VHMODE</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">scope1</span><span class="plain"> = </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">req</span><span class="plain">-</span><span class="element">>block_package</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">template_package</span><span class="plain"> = </span><span class="identifier">Site::assimilation_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">scope2</span><span class="plain"> = </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">template_package</span><span class="plain">);</span>
|
||||
<span class="identifier">EmitInterSchemas::emit</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, &</span><span class="identifier">VH</span><span class="plain">, </span><span class="identifier">sch</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">scope1</span><span class="plain">, </span><span class="identifier">scope2</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">Produce::pop_code_position</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
|
|
|
@ -38,12 +38,7 @@
|
|||
<span class="reserved">else</span>
|
||||
<span class="identifier">Inter::Tree::traverse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="functiontext">CodeGen::MergeTemplate::visitor</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, 0);</span>
|
||||
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">template_package</span><span class="plain"> = </span><span class="identifier">Inter::Packages::by_url</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/main/template"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">template_package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">main_package</span><span class="plain"> = </span><span class="identifier">Site::main_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_bookmark</span><span class="plain"> </span><span class="identifier">in_main</span><span class="plain"> = </span><span class="identifier">Inter::Bookmarks::at_end_of_this_package</span><span class="plain">(</span><span class="identifier">main_package</span><span class="plain">);</span>
|
||||
<span class="identifier">template_package</span><span class="plain"> = </span><span class="functiontext">CodeGen::Assimilate::new_package_named</span><span class="plain">(&</span><span class="identifier">in_main</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="identifier">plain_ptype_symbol</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">template_package</span><span class="plain"> = </span><span class="identifier">Site::ensure_assimilation_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">plain_ptype_symbol</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">inter_bookmark</span><span class="plain"> </span><span class="identifier">link_bookmark</span><span class="plain"> =</span>
|
||||
<span class="identifier">Inter::Bookmarks::at_end_of_this_package</span><span class="plain">(</span><span class="identifier">template_package</span><span class="plain">);</span>
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
<span class="reserved">if</span><span class="plain"> (!</span><span class="identifier">Inter::Symbols::is_defined</span><span class="plain">(</span><span class="identifier">D</span><span class="plain">)) {</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">socket</span><span class="plain"> = </span><span class="identifier">Inter::Connectors::find_socket</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">symbol_name</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">socket</span><span class="plain">) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Finding socket %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">symbol_name</span><span class="plain">);</span>
|
||||
<span class="identifier">D</span><span class="plain"> = </span><span class="identifier">socket</span><span class="plain">-></span><span class="identifier">equated_to</span><span class="plain">;</span>
|
||||
<span class="identifier">S</span><span class="plain">-></span><span class="identifier">equated_to</span><span class="plain"> = </span><span class="identifier">D</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -248,7 +248,14 @@ is 20. We instead compile this as
|
|||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CONSTANT_SUM_LIST</span><span class="plain">:</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CONSTANT_PRODUCT_LIST</span><span class="plain">:</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CONSTANT_DIFFERENCE_LIST</span><span class="plain">:</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CONSTANT_QUOTIENT_LIST</span><span class="plain">:</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CONSTANT_QUOTIENT_LIST</span><span class="plain">: {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain"> = </span><span class="functiontext">CodeGen::CL::constant_depth</span><span class="plain">(</span><span class="identifier">con_name</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">depth</span><span class="plain"> > 1) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Con %S has depth %d\</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><span class="identifier">depth</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::CL::constant_depth</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">generated_segment</span><span class="plain"> *</span><span class="identifier">saved</span><span class="plain"> = </span><span class="functiontext">CodeGen::select</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="functiontext">CodeGen::Targets::basic_constant_segment</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">depth</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="functiontext">CodeGen::current</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::Targets::begin_constant</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="functiontext">CodeGen::CL::name</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">TRUE</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">=</span><span class="identifier">DATA_CONST_IFLD</span><span class="plain">; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">P</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">extent</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">=</span><span class="identifier">i</span><span class="plain">+2) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">></span><span class="identifier">DATA_CONST_IFLD</span><span class="plain">) {</span>
|
||||
|
@ -264,21 +271,70 @@ is 20. We instead compile this as
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">bracket</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">")"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="functiontext">CodeGen::Targets::end_constant</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="functiontext">CodeGen::CL::name</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">));</span>
|
||||
<span class="functiontext">CodeGen::deselect</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">saved</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CONSTANT_DIRECT</span><span class="plain">: {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DATA_CONST_IFLD</span><span class="plain">];</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val2</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DATA_CONST_IFLD</span><span class="plain"> + 1];</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain"> = </span><span class="functiontext">CodeGen::CL::constant_depth</span><span class="plain">(</span><span class="identifier">con_name</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">depth</span><span class="plain"> > 1) </span><span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Con %S has depth %d\</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><span class="identifier">depth</span><span class="plain">);</span>
|
||||
<span class="reserved">generated_segment</span><span class="plain"> *</span><span class="identifier">saved</span><span class="plain"> = </span><span class="functiontext">CodeGen::select</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="functiontext">CodeGen::Targets::basic_constant_segment</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">depth</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="functiontext">CodeGen::current</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ifndef_me</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"#ifndef %S;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="functiontext">CodeGen::CL::name</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">));</span>
|
||||
<span class="functiontext">CodeGen::Targets::begin_constant</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="functiontext">CodeGen::CL::name</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DATA_CONST_IFLD</span><span class="plain">];</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val2</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DATA_CONST_IFLD</span><span class="plain"> + 1];</span>
|
||||
<span class="functiontext">CodeGen::CL::literal</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">con_name</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">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::Targets::end_constant</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="functiontext">CodeGen::CL::name</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ifndef_me</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" #endif;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::deselect</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">saved</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</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">"ungenerated constant format"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::CL::constant_depth</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">trace</span><span class="plain">) {</span>
|
||||
<span class="identifier">LOG_INDENT</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">d</span><span class="plain"> = </span><span class="functiontext">CodeGen::CL::constant_depth_inner</span><span class="plain">(</span><span class="identifier">con</span><span class="plain">, </span><span class="identifier">trace</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">trace</span><span class="plain">) </span><span class="identifier">LOG</span><span class="plain">(</span><span class="string">"%S has depth %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">con</span><span class="plain">-></span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">d</span><span class="plain">);</span>
|
||||
<span class="identifier">LOG_OUTDENT</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">d</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::CL::constant_depth_inner</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">trace</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">con</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 1;</span>
|
||||
<span class="identifier">inter_tree_node</span><span class="plain"> *</span><span class="identifier">D</span><span class="plain"> = </span><span class="identifier">Inter::Symbols::definition</span><span class="plain">(</span><span class="identifier">con</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</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">CONSTANT_IST</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 1;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">FORMAT_CONST_IFLD</span><span class="plain">] == </span><span class="identifier">CONSTANT_DIRECT</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DATA_CONST_IFLD</span><span class="plain">];</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val2</span><span class="plain"> = </span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DATA_CONST_IFLD</span><span class="plain"> + 1];</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">val1</span><span class="plain"> == </span><span class="identifier">ALIAS_IVAL</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">alias</span><span class="plain"> =</span>
|
||||
<span class="identifier">Inter::SymbolsTables::symbol_from_data_pair_and_table</span><span class="plain">(</span>
|
||||
<span class="identifier">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">, </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">package</span><span class="plain">));</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">CodeGen::CL::constant_depth</span><span class="plain">(</span><span class="identifier">alias</span><span class="plain">, </span><span class="identifier">trace</span><span class="plain">) + 1;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> 1;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">FORMAT_CONST_IFLD</span><span class="plain">] == </span><span class="identifier">CONSTANT_SUM_LIST</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">FORMAT_CONST_IFLD</span><span class="plain">] == </span><span class="identifier">CONSTANT_PRODUCT_LIST</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">FORMAT_CONST_IFLD</span><span class="plain">] == </span><span class="identifier">CONSTANT_DIFFERENCE_LIST</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">FORMAT_CONST_IFLD</span><span class="plain">] == </span><span class="identifier">CONSTANT_QUOTIENT_LIST</span><span class="plain">)) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">total</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">i</span><span class="plain">=</span><span class="identifier">DATA_CONST_IFLD</span><span class="plain">; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">extent</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">=</span><span class="identifier">i</span><span class="plain">+2) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val2</span><span class="plain"> = </span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">i</span><span class="plain"> + 1];</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">val1</span><span class="plain"> == </span><span class="identifier">ALIAS_IVAL</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">alias</span><span class="plain"> =</span>
|
||||
<span class="identifier">Inter::SymbolsTables::symbol_from_data_pair_and_table</span><span class="plain">(</span>
|
||||
<span class="identifier">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">, </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">D</span><span class="plain">-></span><span class="identifier">package</span><span class="plain">));</span>
|
||||
<span class="identifier">total</span><span class="plain"> += </span><span class="functiontext">CodeGen::CL::constant_depth</span><span class="plain">(</span><span class="identifier">alias</span><span class="plain">, </span><span class="identifier">trace</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">total</span><span class="plain">++;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> 1 + </span><span class="identifier">total</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> 1;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">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>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">literal_content</span><span class="plain">;</span>
|
||||
|
@ -410,6 +466,10 @@ is 20. We instead compile this as
|
|||
|
||||
<p class="endnote">The function CodeGen::CL::constant is used in 3/fc (<a href="3-fc.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::CL::constant_depth appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::CL::constant_depth_inner appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::CL::literal_text_at is used in 3/fc (<a href="3-fc.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::CL::compare_tlh appears nowhere else.</p>
|
||||
|
|
|
@ -339,7 +339,7 @@ in the I6 template, or some extension), and we therefore do nothing.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">generated_segment</span><span class="plain"> *</span><span class="identifier">saved</span><span class="plain"> = </span><span class="functiontext">CodeGen::select</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="functiontext">CodeGen::Targets::constant_segment</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">));</span>
|
||||
<span class="reserved">generated_segment</span><span class="plain"> *</span><span class="identifier">saved</span><span class="plain"> = </span><span class="functiontext">CodeGen::select</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="functiontext">CodeGen::Targets::basic_constant_segment</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, 1));</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">prop_name</span><span class="plain">, </span><span class="identifier">ASSIMILATED_IANN</span><span class="plain">) >= 0) {</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">A</span><span class="plain"> = </span><span class="identifier">Inter::Symbols::get_translate</span><span class="plain">(</span><span class="identifier">prop_name</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">A</span><span class="plain"> = </span><span class="functiontext">CodeGen::CL::name</span><span class="plain">(</span><span class="identifier">prop_name</span><span class="plain">);</span>
|
||||
|
|
|
@ -86,6 +86,7 @@
|
|||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENERAL_SEGMENT_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">DEFAULT_SEGMENT_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">BASIC_CONSTANT_SEGMENT_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">CONSTANT_SEGMENT_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">PROPERTY_SEGMENT_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">TL_SEGMENT_MTID</span>
|
||||
|
@ -94,6 +95,7 @@
|
|||
<pre class="display">
|
||||
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENERAL_SEGMENT_MTID</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="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">)</span>
|
||||
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">DEFAULT_SEGMENT_MTID</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="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">)</span>
|
||||
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">BASIC_CONSTANT_SEGMENT_MTID</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="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain">)</span>
|
||||
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">CONSTANT_SEGMENT_MTID</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="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">)</span>
|
||||
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">PROPERTY_SEGMENT_MTID</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="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">)</span>
|
||||
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">TL_SEGMENT_MTID</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="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">)</span>
|
||||
|
@ -116,6 +118,12 @@
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Targets::basic_constant_segment</span><span class="plain">(</span><span class="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">IMETHOD_CALL</span><span class="plain">(</span><span class="identifier">rv</span><span class="plain">, </span><span class="identifier">gen</span><span class="plain">-</span><span class="element">>target</span><span class="plain">, </span><span class="constant">BASIC_CONSTANT_SEGMENT_MTID</span><span class="plain">, </span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">depth</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Targets::property_segment</span><span class="plain">(</span><span class="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">IMETHOD_CALL</span><span class="plain">(</span><span class="identifier">rv</span><span class="plain">, </span><span class="identifier">gen</span><span class="plain">-</span><span class="element">>target</span><span class="plain">, </span><span class="constant">PROPERTY_SEGMENT_MTID</span><span class="plain">, </span><span class="identifier">gen</span><span class="plain">);</span>
|
||||
|
@ -135,7 +143,9 @@
|
|||
|
||||
<p class="endnote">The function CodeGen::Targets::default_segment is used in 3/cal (<a href="3-cal.html#SP2">§2</a>), 3/iap (<a href="3-iap.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Targets::constant_segment is used in 3/cal (<a href="3-cal.html#SP2">§2</a>), 3/iap (<a href="3-iap.html#SP4_5">§4.5</a>, <a href="3-iap.html#SP4_6">§4.6</a>, <a href="3-iap.html#SP5">§5</a>).</p>
|
||||
<p class="endnote">The function CodeGen::Targets::constant_segment is used in 3/cal (<a href="3-cal.html#SP2">§2</a>), 3/iap (<a href="3-iap.html#SP4_6">§4.6</a>, <a href="3-iap.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Targets::basic_constant_segment is used in 3/cal (<a href="3-cal.html#SP4">§4</a>), 3/iap (<a href="3-iap.html#SP4_5">§4.5</a>).</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Targets::property_segment appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">cgt</span><span class="plain">, </span><span class="constant">GENERAL_SEGMENT_MTID</span><span class="plain">, </span><span class="functiontext">CodeGen::I6::general_segment</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">cgt</span><span class="plain">, </span><span class="constant">TL_SEGMENT_MTID</span><span class="plain">, </span><span class="functiontext">CodeGen::I6::tl_segment</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">cgt</span><span class="plain">, </span><span class="constant">DEFAULT_SEGMENT_MTID</span><span class="plain">, </span><span class="functiontext">CodeGen::I6::default_segment</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">cgt</span><span class="plain">, </span><span class="constant">BASIC_CONSTANT_SEGMENT_MTID</span><span class="plain">, </span><span class="functiontext">CodeGen::I6::basic_constant_segment</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">cgt</span><span class="plain">, </span><span class="constant">CONSTANT_SEGMENT_MTID</span><span class="plain">, </span><span class="functiontext">CodeGen::I6::constant_segment</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">cgt</span><span class="plain">, </span><span class="constant">PROPERTY_SEGMENT_MTID</span><span class="plain">, </span><span class="functiontext">CodeGen::I6::property_segment</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">cgt</span><span class="plain">, </span><span class="constant">COMPILE_PRIMITIVE_MTID</span><span class="plain">, </span><span class="functiontext">CodeGen::I6::compile_primitive</span><span class="plain">);</span>
|
||||
|
@ -69,6 +70,16 @@ now a bitmap of flags for tracing actions, calls to object routines, and so on.
|
|||
<span class="definitionkeyword">enum</span> <span class="constant">compiler_versioning_matter_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">attributes_at_eof_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">very_early_matter_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_1_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_2_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_3_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_4_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_5_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_6_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_7_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_8_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_9_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">constants_10_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">early_matter_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">text_literals_code_I7CGS</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">summations_at_eof_I7CGS</span>
|
||||
|
@ -87,6 +98,16 @@ now a bitmap of flags for tracing actions, calls to object routines, and so on.
|
|||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">compiler_versioning_matter_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">attributes_at_eof_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">very_early_matter_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_1_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_2_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_3_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_4_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_5_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_6_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_7_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_8_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_9_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">constants_10_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">early_matter_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">text_literals_code_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>segments</span><span class="plain">[</span><span class="constant">summations_at_eof_I7CGS</span><span class="plain">] = </span><span class="functiontext">CodeGen::new_segment</span><span class="plain">();</span>
|
||||
|
@ -135,9 +156,13 @@ now a bitmap of flags for tracing actions, calls to object routines, and so on.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::I6::default_segment</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="reserved">return</span><span class="plain"> </span><span class="constant">main_matter_I7CGS</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::I6::constant_segment</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="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::I6::constant_segment</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="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="constant">early_matter_I7CGS</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::I6::basic_constant_segment</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="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">depth</span><span class="plain"> >= 10) </span><span class="identifier">depth</span><span class="plain"> = 10;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="constant">constants_1_I7CGS</span><span class="plain"> + </span><span class="identifier">depth</span><span class="plain"> - 1;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::I6::property_segment</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="reserved">return</span><span class="plain"> </span><span class="constant">attributes_at_eof_I7CGS</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -317,6 +342,8 @@ now a bitmap of flags for tracing actions, calls to object routines, and so on.
|
|||
|
||||
<p class="endnote">The function CodeGen::I6::constant_segment is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::I6::basic_constant_segment is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::I6::property_segment is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::I6::tl_segment is used in <a href="#SP1">§1</a>.</p>
|
||||
|
|
|
@ -610,6 +610,11 @@ list is not exhaustive.
|
|||
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"The Inter pipeline description contained errors"</span><span class="plain">);</span>
|
||||
<span class="identifier">CodeGen::Pipeline::set_repository</span><span class="plain">(</span><span class="identifier">SS</span><span class="plain">, </span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">inter_library</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_library</span><span class="plain"> *</span><span class="identifier">bi</span><span class="plain"> =</span>
|
||||
<span class="identifier">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"basic_inform"</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_i6t_files</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">bi</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"The Basic Inform inter library cannot be found"</span><span class="plain">);</span>
|
||||
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">bi</span><span class="plain">, </span><span class="identifier">inter_library</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_library</span><span class="plain"> *</span><span class="identifier">stdr</span><span class="plain"> =</span>
|
||||
<span class="identifier">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"standard_rules"</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_i6t_files</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">stdr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
|
|
|
@ -36,7 +36,7 @@ but on others it's compiled into the body of an application. So:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/cm (<a href="27-cm.html#SP1">§1</a>), 1/ppl (<a href="1-ppl.html#SP5">§5</a>), 2/lnk (<a href="2-lnk.html#SP1">§1</a>), 3/fc (<a href="3-fc.html#SP1">§1</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/cm (<a href="27-cm.html#SP1">§1</a>), 3/fc (<a href="3-fc.html#SP1">§1</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>As a matter of policy, no module is allowed to start or stop the foundation
|
||||
module, not even the mighty core; so we take care of that with one more
|
||||
|
|
|
@ -43,7 +43,7 @@ when they want I7 to run.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/cm (<a href="27-cm.html#SP1">§1</a>), 1/bs (<a href="1-bs.html#SP2">§2</a>), 1/ppl (<a href="1-ppl.html#SP5">§5</a>), 2/lnk (<a href="2-lnk.html#SP1">§1</a>), 3/fc (<a href="3-fc.html#SP1">§1</a>), 3/sm (<a href="3-sm.html#SP36">§36</a>, <a href="3-sm.html#SP36_1">§36.1</a>, <a href="3-sm.html#SP38">§38</a>), 3/em2 (<a href="3-em2.html#SP24">§24</a>), 4/ap (<a href="4-ap.html#SP2">§2</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/cm (<a href="27-cm.html#SP1">§1</a>), 1/bs (<a href="1-bs.html#SP2">§2</a>), 3/fc (<a href="3-fc.html#SP1">§1</a>), 3/sm (<a href="3-sm.html#SP36">§36</a>, <a href="3-sm.html#SP36_1">§36.1</a>, <a href="3-sm.html#SP38">§38</a>), 3/em2 (<a href="3-em2.html#SP24">§24</a>), 4/ap (<a href="4-ap.html#SP2">§2</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>Either way, that brings us here. All our modules have to be started up and
|
||||
shut down, so we take care of that with one more intermediary. These modules
|
||||
|
|
|
@ -308,7 +308,9 @@
|
|||
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">c</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Packages::by_name</span><span class="plain">(</span><span class="identifier">at_P</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::by_name</span><span class="plain">(</span><span class="identifier">at_P</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">pack</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Packages::by_name</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">>root_package</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -309,9 +309,9 @@
|
|||
|
||||
<p class="endnote">The function Inter::Symbols::clear_transient_flags appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Symbols::get_flag appears nowhere else.</p>
|
||||
<p class="endnote">The function Inter::Symbols::get_flag is used in 3/iibf (<a href="3-iibf.html#SP1_1_3_2">§1.1.3.2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Symbols::set_flag is used in 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Inter::Symbols::set_flag is used in 3/iibf (<a href="3-iibf.html#SP1_4_2">§1.4.2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Symbols::clear_flag appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -346,6 +346,8 @@ that's the end of the list and therefore the block. (There is no resource 0.)
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">st</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">sc</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">sc</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">uniq</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">uniq</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">L</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">L</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
|
@ -366,6 +368,7 @@ that's the end of the list and therefore the block. (There is no resource 0.)
|
|||
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name_creating_at_ID</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">>stored_symbols_table</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">X</span><span class="plain">);</span>
|
||||
<span class="functiontext">Inter::Symbols::set_type</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, (</span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">st</span><span class="plain">);</span>
|
||||
<span class="functiontext">Inter::Symbols::set_scope</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, (</span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">sc</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">uniq</span><span class="plain"> == 1) </span><span class="functiontext">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="constant">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">trans</span><span class="plain">) > 0) </span><span class="functiontext">Inter::Symbols::set_translate</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">trans</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">L</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
|
@ -414,6 +417,10 @@ that's the end of the list and therefore the block. (There is no resource 0.)
|
|||
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">-</span><span class="element">>symbol_ID</span><span class="plain">);</span>
|
||||
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="functiontext">Inter::Symbols::get_type</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">));</span>
|
||||
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="functiontext">Inter::Symbols::get_scope</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Symbols::get_flag</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">, </span><span class="constant">MAKE_NAME_UNIQUE</span><span class="plain">))</span>
|
||||
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, 1);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, 0);</span>
|
||||
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">-</span><span class="element">>symbol_name</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">symb</span><span class="plain">-</span><span class="element">>symbol_name</span><span class="plain">)</span>
|
||||
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">));</span>
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
|
||||
<span class="identifier">path_to_inter</span><span class="plain"> = </span><span class="functiontext">Pathnames::installation_path</span><span class="plain">(</span><span class="string">"INTER_PATH"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"inter"</span><span class="plain">);</span>
|
||||
<span class="identifier">path_to_pipelines</span><span class="plain"> = </span><span class="functiontext">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">path_to_inter</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Pipelines"</span><span class="plain">);</span>
|
||||
<span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">text_stream</span><span class="plain">);</span>
|
||||
<span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">inter_library</span><span class="plain">);</span>
|
||||
|
||||
<span class="functiontext">CommandLine::declare_heading</span><span class="plain">(</span>
|
||||
<span class="identifier">L</span><span class="string">"[[Purpose]]\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span>
|
||||
|
@ -83,6 +83,8 @@
|
|||
<span class="functiontext">CommandLine::read</span><span class="plain">(</span><span class="identifier">argc</span><span class="plain">, </span><span class="identifier">argv</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, &</span><span class="functiontext">Main::respond</span><span class="plain">, &</span><span class="functiontext">Main::add_file</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">template_action</span><span class="plain"> == </span><span class="constant">ASSIMILATE_CLSW</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_library</span><span class="plain"> *</span><span class="identifier">lib</span><span class="plain"> = </span><span class="functiontext">CodeGen::Libraries::new</span><span class="plain">(</span><span class="identifier">template_path</span><span class="plain">);</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">attach</span><span class="plain"> = </span><span class="functiontext">CodeGen::Libraries::URL</span><span class="plain">(</span><span class="identifier">lib</span><span class="plain">);</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain"> = </span><span class="functiontext">CodeGen::Architecture::leafname</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) == 0) </span><span class="functiontext">Errors::fatal</span><span class="plain">(</span><span class="string">"no -architecture given"</span><span class="plain">);</span>
|
||||
<span class="identifier">pipeline_as_file</span><span class="plain"> = </span><span class="functiontext">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">path_to_pipelines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"assimilate.interpipeline"</span><span class="plain">);</span>
|
||||
|
@ -100,6 +102,11 @@
|
|||
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="functiontext">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"*outt"</span><span class="plain">), </span><span class="identifier">fullname</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">leafname</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">fullname</span><span class="plain">);</span>
|
||||
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">attach</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"/main/(%c+)"</span><span class="plain">)) {</span>
|
||||
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="functiontext">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"*attach"</span><span class="plain">), </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="functiontext">Main::act</span><span class="plain">();</span>
|
||||
|
@ -116,7 +123,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function main is used in 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 1/bs (<a href="1-bs.html#SP2">§2</a>), 1/ppl (<a href="1-ppl.html#SP5">§5</a>), 2/lnk (<a href="2-lnk.html#SP1">§1</a>), 3/fc (<a href="3-fc.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function main is used in 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 1/bs (<a href="1-bs.html#SP2">§2</a>), 3/fc (<a href="3-fc.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
|
@ -195,6 +202,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pipeline_as_file</span><span class="plain">) </span><span class="identifier">SS</span><span class="plain"> = </span><span class="functiontext">CodeGen::Pipeline::parse_from_file</span><span class="plain">(</span><span class="identifier">pipeline_as_file</span><span class="plain">, </span><span class="identifier">pipeline_vars</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">SS</span><span class="plain"> = </span><span class="functiontext">CodeGen::Pipeline::parse</span><span class="plain">(</span><span class="identifier">pipeline_as_text</span><span class="plain">, </span><span class="identifier">pipeline_vars</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="functiontext">CodeGen::Pipeline::run</span><span class="plain">(</span><span class="identifier">domain_path</span><span class="plain">, </span><span class="identifier">SS</span><span class="plain">, </span><span class="identifier">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_i6t_files</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">Errors::fatal</span><span class="plain">(</span><span class="string">"pipeline could not be parsed"</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">unit_test_file</span><span class="plain">) {</span>
|
||||
<span class="functiontext">UnitTests::run</span><span class="plain">(</span><span class="identifier">unit_test_file</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
|
|
1
inform7/.gitignore
vendored
1
inform7/.gitignore
vendored
|
@ -39,5 +39,6 @@ Tests/Test Inter/_Inter_Binary/
|
|||
Tests/Test Maps/_Maps_Actual/
|
||||
Tests/Test Problems/_Results_Actual/
|
||||
|
||||
Internal/I6T/basic_inform/*.interb
|
||||
Internal/I6T/standard_rules/*.interb
|
||||
|
||||
|
|
1
inform7/Internal/I6T/basic_inform/library_metadata.txt
Normal file
1
inform7/Internal/I6T/basic_inform/library_metadata.txt
Normal file
|
@ -0,0 +1 @@
|
|||
attach: /main/basic
|
13
inform7/Internal/I6T/basic_inform/source/Main.i6t
Normal file
13
inform7/Internal/I6T/basic_inform/source/Main.i6t
Normal file
|
@ -0,0 +1,13 @@
|
|||
B/basict: Basic Inform Template.
|
||||
|
||||
@Purpose: Support for the language alone.
|
||||
|
||||
@-------------------------------------------------------------------------------
|
||||
|
||||
@p Contents.
|
||||
|
||||
@c
|
||||
{-segment:Definitions.i6t}
|
||||
{-segment:Flex.i6t}
|
||||
{-segment:BlockValues.i6t}
|
||||
{-segment:Text.i6t}
|
|
@ -2136,11 +2136,7 @@ opcode, and so Glulx followed suit.
|
|||
print "Interpreter version ", ix / $10000, ".", (ix & $FF00) / $100,
|
||||
".", ix & $FF, " / ";
|
||||
@gestalt 0 0 ix;
|
||||
print "VM ", ix / $10000, ".", (ix & $FF00) / $100, ".", ix & $FF, " / ";
|
||||
print "Library serial number ", (string) LibSerial, "^";
|
||||
#Ifdef LanguageVersion;
|
||||
print (string) LanguageVersion, "^";
|
||||
#Endif; ! LanguageVersion
|
||||
print "VM ", ix / $10000, ".", (ix & $FF00) / $100, ".", ix & $FF, "^";
|
||||
ShowExtensionVersions();
|
||||
say__p = 1;
|
||||
];
|
||||
|
|
|
@ -16,22 +16,9 @@ ICL mode.
|
|||
@p Identification.
|
||||
Both of the compiler and template layer, and of the story file to be produced.
|
||||
|
||||
The "library" identifying texts are now a little anachronistic, since the
|
||||
template layer is not strictly speaking an I6 library in the same way as
|
||||
the original: but it is surely the spiritual successor to 6/11N, so we
|
||||
may as well mark it 6/12N.
|
||||
|
||||
@c
|
||||
! This file was compiled by Inform 7: the build number and version of the
|
||||
! I6 template layer used are as follows.
|
||||
Constant LibSerial = "080126";
|
||||
Constant LibRelease = "6/12N";
|
||||
Constant LIBRARY_VERSION = 612;
|
||||
|
||||
@p Constants.
|
||||
|
||||
@c
|
||||
{-segment:Definitions.i6t}
|
||||
|
||||
@p Global Variables.
|
||||
These are not the only global variables defined in the template layer:
|
||||
|
@ -574,9 +561,6 @@ handles the heap, and there is then one further section to support each of
|
|||
the kinds of value in question.
|
||||
|
||||
@c
|
||||
{-segment:Flex.i6t}
|
||||
{-segment:BlockValues.i6t}
|
||||
{-segment:Text.i6t}
|
||||
{-segment:RegExp.i6t}
|
||||
{-segment:StoredAction.i6t}
|
||||
{-segment:Lists.i6t}
|
||||
|
|
|
@ -397,7 +397,7 @@ compile a |Story_Author|.
|
|||
VM_Describe_Release();
|
||||
print " / Inform 7 build ", (PrintI6Text) NI_BUILD_COUNT, " ";
|
||||
print "(I6/v"; inversion;
|
||||
print " lib ", (PrintI6Text) LibRelease, ") ";
|
||||
print ") ";
|
||||
#Ifdef STRICT_MODE;
|
||||
print "S";
|
||||
#Endif; ! STRICT_MODE
|
||||
|
|
|
@ -709,7 +709,7 @@ opcode, and so Glulx followed suit.
|
|||
#Ifnot;
|
||||
print (char) HDR_TERPVERSION->0;
|
||||
#Endif;
|
||||
print ") / ";
|
||||
print ")^";
|
||||
} else {
|
||||
print "Interpreter ", HDR_TERPNUMBER->0, " Version ";
|
||||
#Iftrue (#version_number == 6);
|
||||
|
@ -717,15 +717,9 @@ opcode, and so Glulx followed suit.
|
|||
#Ifnot;
|
||||
print (char) HDR_TERPVERSION->0;
|
||||
#Endif;
|
||||
print " / ";
|
||||
print "^";
|
||||
}
|
||||
print "Library serial number ", (string) LibSerial, "^";
|
||||
#Ifdef LanguageVersion;
|
||||
print (string) LanguageVersion, "^";
|
||||
#Endif; ! LanguageVersion
|
||||
#ifdef ShowExtensionVersions;
|
||||
ShowExtensionVersions();
|
||||
#endif;
|
||||
say__p = 1;
|
||||
];
|
||||
|
||||
|
|
|
@ -432,6 +432,11 @@ with "Output.i6t".
|
|||
Problems::Fatal::issue("The Inter pipeline description contained errors");
|
||||
CodeGen::Pipeline::set_repository(SS, Emit::tree());
|
||||
linked_list *requirements_list = NEW_LINKED_LIST(inter_library);
|
||||
inter_library *bi =
|
||||
CodeGen::Libraries::find(I"basic_inform", NO_FS_AREAS, pathname_of_i6t_files);
|
||||
if (bi == NULL)
|
||||
Problems::Fatal::issue("The Basic Inform inter library cannot be found");
|
||||
ADD_TO_LINKED_LIST(bi, inter_library, requirements_list);
|
||||
inter_library *stdr =
|
||||
CodeGen::Libraries::find(I"standard_rules", NO_FS_AREAS, pathname_of_i6t_files);
|
||||
if (stdr == NULL)
|
||||
|
|
|
@ -29,4 +29,5 @@ Tests/Test Inter/_Inter_Binary/
|
|||
Tests/Test Maps/_Maps_Actual/
|
||||
Tests/Test Problems/_Results_Actual/
|
||||
|
||||
Internal/I6T/basic_inform/*.interb
|
||||
Internal/I6T/standard_rules/*.interb
|
||||
|
|
|
@ -38,7 +38,7 @@ int main(int argc, char **argv) {
|
|||
|
||||
path_to_inter = Pathnames::installation_path("INTER_PATH", I"inter");
|
||||
path_to_pipelines = Pathnames::subfolder(path_to_inter, I"Pipelines");
|
||||
requirements_list = NEW_LINKED_LIST(text_stream);
|
||||
requirements_list = NEW_LINKED_LIST(inter_library);
|
||||
|
||||
CommandLine::declare_heading(
|
||||
L"[[Purpose]]\n\n"
|
||||
|
@ -70,6 +70,8 @@ int main(int argc, char **argv) {
|
|||
CommandLine::read(argc, argv, NULL, &Main::respond, &Main::add_file);
|
||||
|
||||
if (template_action == ASSIMILATE_CLSW) {
|
||||
inter_library *lib = CodeGen::Libraries::new(template_path);
|
||||
text_stream *attach = CodeGen::Libraries::URL(lib);
|
||||
text_stream *name = CodeGen::Architecture::leafname();
|
||||
if (Str::len(name) == 0) Errors::fatal("no -architecture given");
|
||||
pipeline_as_file = Filenames::in_folder(path_to_pipelines, I"assimilate.interpipeline");
|
||||
|
@ -87,6 +89,11 @@ int main(int argc, char **argv) {
|
|||
Str::copy(Dictionaries::create_text(pipeline_vars, I"*outt"), fullname);
|
||||
DISCARD_TEXT(leafname);
|
||||
DISCARD_TEXT(fullname);
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, attach, L"/main/(%c+)")) {
|
||||
Str::copy(Dictionaries::create_text(pipeline_vars, I"*attach"), mr.exp[0]);
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
||||
|
||||
Main::act();
|
||||
|
@ -156,6 +163,7 @@ void Main::act(void) {
|
|||
if (pipeline_as_file) SS = CodeGen::Pipeline::parse_from_file(pipeline_as_file, pipeline_vars);
|
||||
else SS = CodeGen::Pipeline::parse(pipeline_as_text, pipeline_vars);
|
||||
if (SS) CodeGen::Pipeline::run(domain_path, SS, NO_FS_AREAS, pathname_of_i6t_files, requirements_list);
|
||||
else Errors::fatal("pipeline could not be parsed");
|
||||
} else if (unit_test_file) {
|
||||
UnitTests::run(unit_test_file);
|
||||
} else {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
prepare
|
||||
prepare <- *attach
|
||||
merge-template <- Main.i6t
|
||||
parse-linked-matter
|
||||
resolve-conditional-compilation
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
prepare
|
||||
prepare <- template
|
||||
generate text -> *out
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
prepare
|
||||
merge-template <- Main.i6t
|
||||
parse-linked-matter
|
||||
resolve-conditional-compilation
|
||||
assimilate
|
||||
resolve-external-symbols
|
||||
generate text -> *out
|
|
@ -2,5 +2,5 @@ Constant Grammar__Version 2;
|
|||
Global debug_flag;
|
||||
Global reason_code = NULL;
|
||||
Constant life = NULL;
|
||||
Constant Peach = Banana;
|
||||
Constant Banana = 2;
|
||||
Constant Peach = Banana;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7,3 +7,4 @@ inter: inter/Tests/PipelineErrors/Dismal.interpipeline, line 4: this stage shoul
|
|||
inter: inter/Tests/PipelineErrors/Dismal.interpipeline, line 5: this stage should not take a left arrow and a source
|
||||
inter: inter/Tests/PipelineErrors/Dismal.interpipeline, line 6: no such pipeline variable as '*this'
|
||||
|
||||
inter: fatal error: pipeline could not be parsed
|
||||
|
|
|
@ -15,6 +15,7 @@ itself during compilation.
|
|||
typedef struct building_site {
|
||||
struct inter_package *main_package;
|
||||
struct inter_package *connectors_package;
|
||||
struct inter_package *assimilation_package;
|
||||
struct inter_symbol *opcodes_set[MAX_BIPS];
|
||||
struct inter_bookmark pragmas_bookmark;
|
||||
struct inter_bookmark package_types_bookmark;
|
||||
|
@ -57,6 +58,7 @@ void Site::clear(inter_tree *I) {
|
|||
building_site *B = &(I->site);
|
||||
B->main_package = NULL;
|
||||
B->connectors_package = NULL;
|
||||
B->assimilation_package = NULL;
|
||||
for (int i=0; i<MAX_BIPS; i++) B->opcodes_set[i] = NULL;
|
||||
B->pragmas_bookmark = Inter::Bookmarks::at_start_of_this_repository(I);
|
||||
B->package_types_bookmark = Inter::Bookmarks::at_start_of_this_repository(I);
|
||||
|
@ -165,6 +167,30 @@ void Site::set_connectors_package(inter_tree *I, inter_package *M) {
|
|||
I->site.connectors_package = M;
|
||||
}
|
||||
|
||||
inter_package *Site::assimilation_package(inter_tree *I) {
|
||||
if (I == NULL) internal_error("no tree");
|
||||
return I->site.assimilation_package;
|
||||
}
|
||||
|
||||
inter_package *Site::ensure_assimilation_package(inter_tree *I, inter_symbol *plain_ptype_symbol) {
|
||||
if (I == NULL) internal_error("no tree");
|
||||
if (I->site.assimilation_package == NULL) {
|
||||
inter_package *main_package = Site::main_package(I);
|
||||
inter_package *t_p = Inter::Packages::by_name(main_package, I"template");
|
||||
if (t_p == NULL) {
|
||||
inter_bookmark in_main = Inter::Bookmarks::at_end_of_this_package(main_package);
|
||||
t_p = CodeGen::Assimilate::new_package_named(&in_main, I"template", plain_ptype_symbol);
|
||||
}
|
||||
I->site.assimilation_package = t_p;
|
||||
}
|
||||
return I->site.assimilation_package;
|
||||
}
|
||||
|
||||
void Site::set_assimilation_package(inter_tree *I, inter_package *M) {
|
||||
if (I == NULL) internal_error("no tree");
|
||||
I->site.assimilation_package = M;
|
||||
}
|
||||
|
||||
dictionary *Site::modules_dictionary(inter_tree *I) {
|
||||
if (I->site.modules_indexed_by_name == NULL) {
|
||||
I->site.modules_indexed_by_name = Dictionaries::new(512, FALSE);
|
||||
|
|
|
@ -38,7 +38,7 @@ text_stream *CodeGen::Architecture::leafname(void) {
|
|||
|
||||
=
|
||||
void CodeGen::Architecture::create_pipeline_stage(void) {
|
||||
CodeGen::Stage::new(I"prepare", CodeGen::Architecture::run_prepare_stage, NO_STAGE_ARG, FALSE);
|
||||
CodeGen::Stage::new(I"prepare", CodeGen::Architecture::run_prepare_stage, GENERAL_STAGE_ARG, TRUE);
|
||||
}
|
||||
|
||||
int CodeGen::Architecture::run_prepare_stage(pipeline_step *step) {
|
||||
|
@ -117,8 +117,11 @@ int CodeGen::Architecture::run_prepare_stage_inner(pipeline_step *step, int Z, i
|
|||
LIST_ICON, 1, operands,
|
||||
(inter_t) Inter::Bookmarks::baseline(&in_generic) + 1, NULL);
|
||||
|
||||
inter_package *template_p = NULL;
|
||||
Inter::Package::new_package_named(&in_main, I"template", FALSE, module_name, 1, NULL, &template_p);
|
||||
if (Str::ne(step->step_argument, I"none")) {
|
||||
inter_package *template_p = NULL;
|
||||
Inter::Package::new_package_named(&in_main, step->step_argument, FALSE, module_name, 1, NULL, &template_p);
|
||||
Site::set_assimilation_package(I, template_p);
|
||||
}
|
||||
|
||||
inter_bookmark *in_veneer = Site::veneer_booknark(I);
|
||||
inter_package *veneer_p = Inter::Packages::veneer(I);
|
||||
|
|
|
@ -23,6 +23,11 @@ inter_library *CodeGen::Libraries::new(pathname *P) {
|
|||
return lib;
|
||||
}
|
||||
|
||||
text_stream *CodeGen::Libraries::URL(inter_library *lib) {
|
||||
if (lib == NULL) return NULL;
|
||||
return lib->attachment_point;
|
||||
}
|
||||
|
||||
void CodeGen::Libraries::read_metadata(text_stream *text,
|
||||
text_file_position *tfp, void *state) {
|
||||
inter_library *lib = (inter_library *) state;
|
||||
|
@ -67,6 +72,10 @@ int CodeGen::Libraries::run_link_stage(pipeline_step *step) {
|
|||
else Inter::Textual::read(sidecar, arch_file);
|
||||
|
||||
inter_package *pack = Inter::Packages::by_url(sidecar, req->attachment_point);
|
||||
if (pack == NULL) {
|
||||
WRITE_TO(STDERR, "sought attachment material at: %S in %f\n", req->attachment_point, arch_file);
|
||||
internal_error("unable to find attachment point package");
|
||||
}
|
||||
Inter::Transmigration::move(pack, Site::main_package(step->repository), FALSE);
|
||||
}
|
||||
return TRUE;
|
||||
|
|
|
@ -115,7 +115,7 @@ pipeline_step *CodeGen::Pipeline::read_step(text_stream *step, dictionary *D,
|
|||
Str::copy(step, mr.exp[0]);
|
||||
} else if (Regexp::match(&mr, step, L"(%C+?) (%c+)")) {
|
||||
ST->package_argument = CodeGen::Pipeline::read_parameter(mr.exp[1], D, tfp);
|
||||
if (ST->step_argument == NULL) return NULL;
|
||||
if (ST->package_argument == NULL) return NULL;
|
||||
Str::copy(step, mr.exp[0]);
|
||||
}
|
||||
|
||||
|
@ -356,8 +356,6 @@ inter_symbol *command_ptype_symbol = NULL;
|
|||
inter_symbol *property_ptype_symbol = NULL;
|
||||
inter_symbol *to_phrase_ptype_symbol = NULL;
|
||||
|
||||
inter_package *template_package = NULL;
|
||||
|
||||
void CodeGen::Pipeline::prepare_to_run(inter_tree *I) {
|
||||
|
||||
code_ptype_symbol = Inter::SymbolsTables::url_name_to_symbol(I, NULL, I"/_code");
|
||||
|
@ -369,8 +367,6 @@ void CodeGen::Pipeline::prepare_to_run(inter_tree *I) {
|
|||
property_ptype_symbol = Inter::SymbolsTables::url_name_to_symbol(I, NULL, I"/_property");
|
||||
to_phrase_ptype_symbol = Inter::SymbolsTables::url_name_to_symbol(I, NULL, I"/_to_phrase");
|
||||
|
||||
template_package = Inter::Packages::by_url(I, I"/main/template");
|
||||
|
||||
unchecked_kind_symbol = Inter::Packages::search_resources_exhaustively(I, I"K_unchecked");
|
||||
unchecked_function_symbol = Inter::Packages::search_resources_exhaustively(I, I"K_unchecked_function");
|
||||
typeless_int_symbol = Inter::Packages::search_resources_exhaustively(I, I"K_typeless_int");
|
||||
|
|
|
@ -22,7 +22,9 @@ int CodeGen::Assimilate::run_pipeline_stage(pipeline_step *step) {
|
|||
no_assimilated_actions = 0;
|
||||
no_assimilated_commands = 0;
|
||||
no_assimilated_arrays = 0;
|
||||
|
||||
|
||||
Site::ensure_assimilation_package(I, plain_ptype_symbol);
|
||||
|
||||
CodeGen::Assimilate::ensure(I, &verb_directive_reverse_symbol, I"VERB_DIRECTIVE_REVERSE");
|
||||
CodeGen::Assimilate::ensure(I, &verb_directive_slash_symbol, I"VERB_DIRECTIVE_SLASH");
|
||||
CodeGen::Assimilate::ensure(I, &verb_directive_divider_symbol, I"VERB_DIRECTIVE_DIVIDER");
|
||||
|
@ -60,6 +62,7 @@ void CodeGen::Assimilate::ensure(inter_tree *I, inter_symbol **S, text_stream *i
|
|||
=
|
||||
inter_bookmark CodeGen::Assimilate::template_submodule(inter_tree *I, text_stream *name, inter_tree_node *P) {
|
||||
if (submodule_ptype_symbol) {
|
||||
inter_package *template_package = Site::ensure_assimilation_package(I, plain_ptype_symbol);
|
||||
inter_package *t_p = Inter::Packages::by_name(template_package, name);
|
||||
if (t_p == NULL) {
|
||||
inter_bookmark IBM = Inter::Bookmarks::after_this_node(I, P);
|
||||
|
@ -801,6 +804,7 @@ void CodeGen::Assimilate::function_bodies(inter_tree *I) {
|
|||
Produce::push_code_position(I, Produce::new_cip(I, &(req->position)), Inter::Bookmarks::snapshot(Packaging::at(I)));
|
||||
value_holster VH = Holsters::new(INTER_VOID_VHMODE);
|
||||
inter_symbols_table *scope1 = Inter::Packages::scope(req->block_package);
|
||||
inter_package *template_package = Site::assimilation_package(I);
|
||||
inter_symbols_table *scope2 = Inter::Packages::scope(template_package);
|
||||
EmitInterSchemas::emit(I, &VH, sch, NULL, TRUE, FALSE, scope1, scope2, NULL, NULL);
|
||||
Produce::pop_code_position(I);
|
||||
|
|
|
@ -26,12 +26,7 @@ void CodeGen::MergeTemplate::link(inter_bookmark *IBM, text_stream *template_fil
|
|||
else
|
||||
Inter::Tree::traverse(I, CodeGen::MergeTemplate::visitor, NULL, NULL, 0);
|
||||
|
||||
inter_package *template_package = Inter::Packages::by_url(I, I"/main/template");
|
||||
if (template_package == NULL) {
|
||||
inter_package *main_package = Site::main_package(I);
|
||||
inter_bookmark in_main = Inter::Bookmarks::at_end_of_this_package(main_package);
|
||||
template_package = CodeGen::Assimilate::new_package_named(&in_main, I"template", plain_ptype_symbol);
|
||||
}
|
||||
inter_package *template_package = Site::ensure_assimilation_package(I, plain_ptype_symbol);
|
||||
|
||||
inter_bookmark link_bookmark =
|
||||
Inter::Bookmarks::at_end_of_this_package(template_package);
|
||||
|
|
|
@ -31,7 +31,6 @@ void CodeGen::Externals::visitor(inter_tree *I, inter_tree_node *P, void *state)
|
|||
if (!Inter::Symbols::is_defined(D)) {
|
||||
inter_symbol *socket = Inter::Connectors::find_socket(I, D->symbol_name);
|
||||
if (socket) {
|
||||
LOG("Finding socket %S\n", D->symbol_name);
|
||||
D = socket->equated_to;
|
||||
S->equated_to = D;
|
||||
}
|
||||
|
|
|
@ -210,7 +210,14 @@ void CodeGen::CL::constant(code_generation *gen, inter_tree_node *P) {
|
|||
case CONSTANT_SUM_LIST:
|
||||
case CONSTANT_PRODUCT_LIST:
|
||||
case CONSTANT_DIFFERENCE_LIST:
|
||||
case CONSTANT_QUOTIENT_LIST:
|
||||
case CONSTANT_QUOTIENT_LIST: {
|
||||
int depth = CodeGen::CL::constant_depth(con_name, FALSE);
|
||||
if (depth > 1) {
|
||||
LOG("Con %S has depth %d\n", con_name->symbol_name, depth);
|
||||
CodeGen::CL::constant_depth(con_name, TRUE);
|
||||
}
|
||||
generated_segment *saved = CodeGen::select(gen, CodeGen::Targets::basic_constant_segment(gen, depth));
|
||||
text_stream *OUT = CodeGen::current(gen);
|
||||
CodeGen::Targets::begin_constant(gen, CodeGen::CL::name(con_name), TRUE);
|
||||
for (int i=DATA_CONST_IFLD; i<P->W.extent; i=i+2) {
|
||||
if (i>DATA_CONST_IFLD) {
|
||||
|
@ -226,21 +233,70 @@ void CodeGen::CL::constant(code_generation *gen, inter_tree_node *P) {
|
|||
if (bracket) WRITE(")");
|
||||
}
|
||||
CodeGen::Targets::end_constant(gen, CodeGen::CL::name(con_name));
|
||||
CodeGen::deselect(gen, saved);
|
||||
break;
|
||||
}
|
||||
case CONSTANT_DIRECT: {
|
||||
inter_t val1 = P->W.data[DATA_CONST_IFLD];
|
||||
inter_t val2 = P->W.data[DATA_CONST_IFLD + 1];
|
||||
int depth = CodeGen::CL::constant_depth(con_name, FALSE);
|
||||
if (depth > 1) LOG("Con %S has depth %d\n", con_name->symbol_name, depth);
|
||||
generated_segment *saved = CodeGen::select(gen, CodeGen::Targets::basic_constant_segment(gen, depth));
|
||||
text_stream *OUT = CodeGen::current(gen);
|
||||
if (ifndef_me) WRITE("#ifndef %S;\n", CodeGen::CL::name(con_name));
|
||||
CodeGen::Targets::begin_constant(gen, CodeGen::CL::name(con_name), TRUE);
|
||||
inter_t val1 = P->W.data[DATA_CONST_IFLD];
|
||||
inter_t val2 = P->W.data[DATA_CONST_IFLD + 1];
|
||||
CodeGen::CL::literal(gen, con_name, Inter::Packages::scope_of(P), val1, val2, FALSE);
|
||||
CodeGen::Targets::end_constant(gen, CodeGen::CL::name(con_name));
|
||||
if (ifndef_me) WRITE(" #endif;\n");
|
||||
CodeGen::deselect(gen, saved);
|
||||
break;
|
||||
}
|
||||
default: internal_error("ungenerated constant format");
|
||||
}
|
||||
}
|
||||
|
||||
int CodeGen::CL::constant_depth(inter_symbol *con, int trace) {
|
||||
LOG_INDENT;
|
||||
int d = CodeGen::CL::constant_depth_inner(con, trace);
|
||||
if (trace) LOG("%S has depth %d\n", con->symbol_name, d);
|
||||
LOG_OUTDENT;
|
||||
return d;
|
||||
}
|
||||
int CodeGen::CL::constant_depth_inner(inter_symbol *con, int trace) {
|
||||
if (con == NULL) return 1;
|
||||
inter_tree_node *D = Inter::Symbols::definition(con);
|
||||
if (D->W.data[ID_IFLD] != CONSTANT_IST) return 1;
|
||||
if (D->W.data[FORMAT_CONST_IFLD] == CONSTANT_DIRECT) {
|
||||
inter_t val1 = D->W.data[DATA_CONST_IFLD];
|
||||
inter_t val2 = D->W.data[DATA_CONST_IFLD + 1];
|
||||
if (val1 == ALIAS_IVAL) {
|
||||
inter_symbol *alias =
|
||||
Inter::SymbolsTables::symbol_from_data_pair_and_table(
|
||||
val1, val2, Inter::Packages::scope(D->package));
|
||||
return CodeGen::CL::constant_depth(alias, trace) + 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
if ((D->W.data[FORMAT_CONST_IFLD] == CONSTANT_SUM_LIST) ||
|
||||
(D->W.data[FORMAT_CONST_IFLD] == CONSTANT_PRODUCT_LIST) ||
|
||||
(D->W.data[FORMAT_CONST_IFLD] == CONSTANT_DIFFERENCE_LIST) ||
|
||||
(D->W.data[FORMAT_CONST_IFLD] == CONSTANT_QUOTIENT_LIST)) {
|
||||
int total = 0;
|
||||
for (int i=DATA_CONST_IFLD; i<D->W.extent; i=i+2) {
|
||||
inter_t val1 = D->W.data[i];
|
||||
inter_t val2 = D->W.data[i + 1];
|
||||
if (val1 == ALIAS_IVAL) {
|
||||
inter_symbol *alias =
|
||||
Inter::SymbolsTables::symbol_from_data_pair_and_table(
|
||||
val1, val2, Inter::Packages::scope(D->package));
|
||||
total += CodeGen::CL::constant_depth(alias, trace);
|
||||
} else total++;
|
||||
}
|
||||
return 1 + total;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
typedef struct text_literal_holder {
|
||||
struct text_stream *definition_code;
|
||||
struct text_stream *literal_content;
|
||||
|
|
|
@ -235,7 +235,7 @@ we assume that's the name of an attribute already declared (for example
|
|||
in the I6 template, or some extension), and we therefore do nothing.
|
||||
|
||||
@<Declare as an I6 attribute@> =
|
||||
generated_segment *saved = CodeGen::select(gen, CodeGen::Targets::constant_segment(gen));
|
||||
generated_segment *saved = CodeGen::select(gen, CodeGen::Targets::basic_constant_segment(gen, 1));
|
||||
if (Inter::Symbols::read_annotation(prop_name, ASSIMILATED_IANN) >= 0) {
|
||||
text_stream *A = Inter::Symbols::get_translate(prop_name);
|
||||
if (A == NULL) A = CodeGen::CL::name(prop_name);
|
||||
|
|
|
@ -12,6 +12,7 @@ void CodeGen::I6::create_target(void) {
|
|||
METHOD_ADD(cgt, GENERAL_SEGMENT_MTID, CodeGen::I6::general_segment);
|
||||
METHOD_ADD(cgt, TL_SEGMENT_MTID, CodeGen::I6::tl_segment);
|
||||
METHOD_ADD(cgt, DEFAULT_SEGMENT_MTID, CodeGen::I6::default_segment);
|
||||
METHOD_ADD(cgt, BASIC_CONSTANT_SEGMENT_MTID, CodeGen::I6::basic_constant_segment);
|
||||
METHOD_ADD(cgt, CONSTANT_SEGMENT_MTID, CodeGen::I6::constant_segment);
|
||||
METHOD_ADD(cgt, PROPERTY_SEGMENT_MTID, CodeGen::I6::property_segment);
|
||||
METHOD_ADD(cgt, COMPILE_PRIMITIVE_MTID, CodeGen::I6::compile_primitive);
|
||||
|
@ -47,6 +48,16 @@ now a bitmap of flags for tracing actions, calls to object routines, and so on.
|
|||
@e compiler_versioning_matter_I7CGS
|
||||
@e attributes_at_eof_I7CGS
|
||||
@e very_early_matter_I7CGS
|
||||
@e constants_1_I7CGS
|
||||
@e constants_2_I7CGS
|
||||
@e constants_3_I7CGS
|
||||
@e constants_4_I7CGS
|
||||
@e constants_5_I7CGS
|
||||
@e constants_6_I7CGS
|
||||
@e constants_7_I7CGS
|
||||
@e constants_8_I7CGS
|
||||
@e constants_9_I7CGS
|
||||
@e constants_10_I7CGS
|
||||
@e early_matter_I7CGS
|
||||
@e text_literals_code_I7CGS
|
||||
@e summations_at_eof_I7CGS
|
||||
|
@ -64,6 +75,16 @@ int CodeGen::I6::begin_generation(code_generation_target *cgt, code_generation *
|
|||
gen->segments[compiler_versioning_matter_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[attributes_at_eof_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[very_early_matter_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_1_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_2_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_3_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_4_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_5_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_6_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_7_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_8_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_9_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[constants_10_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[early_matter_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[text_literals_code_I7CGS] = CodeGen::new_segment();
|
||||
gen->segments[summations_at_eof_I7CGS] = CodeGen::new_segment();
|
||||
|
@ -112,9 +133,13 @@ int CodeGen::I6::general_segment(code_generation_target *cgt, code_generation *g
|
|||
int CodeGen::I6::default_segment(code_generation_target *cgt) {
|
||||
return main_matter_I7CGS;
|
||||
}
|
||||
int CodeGen::I6::constant_segment(code_generation_target *cgt) {
|
||||
int CodeGen::I6::constant_segment(code_generation_target *cgt, code_generation *gen) {
|
||||
return early_matter_I7CGS;
|
||||
}
|
||||
int CodeGen::I6::basic_constant_segment(code_generation_target *cgt, code_generation *gen, int depth) {
|
||||
if (depth >= 10) depth = 10;
|
||||
return constants_1_I7CGS + depth - 1;
|
||||
}
|
||||
int CodeGen::I6::property_segment(code_generation_target *cgt) {
|
||||
return attributes_at_eof_I7CGS;
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ int CodeGen::Targets::begin_generation(code_generation *gen) {
|
|||
|
||||
@e GENERAL_SEGMENT_MTID
|
||||
@e DEFAULT_SEGMENT_MTID
|
||||
@e BASIC_CONSTANT_SEGMENT_MTID
|
||||
@e CONSTANT_SEGMENT_MTID
|
||||
@e PROPERTY_SEGMENT_MTID
|
||||
@e TL_SEGMENT_MTID
|
||||
|
@ -57,6 +58,7 @@ int CodeGen::Targets::begin_generation(code_generation *gen) {
|
|||
=
|
||||
IMETHOD_TYPE(GENERAL_SEGMENT_MTID, code_generation_target *cgt, code_generation *gen, inter_tree_node *P)
|
||||
IMETHOD_TYPE(DEFAULT_SEGMENT_MTID, code_generation_target *cgt, code_generation *gen)
|
||||
IMETHOD_TYPE(BASIC_CONSTANT_SEGMENT_MTID, code_generation_target *cgt, code_generation *gen, int depth)
|
||||
IMETHOD_TYPE(CONSTANT_SEGMENT_MTID, code_generation_target *cgt, code_generation *gen)
|
||||
IMETHOD_TYPE(PROPERTY_SEGMENT_MTID, code_generation_target *cgt, code_generation *gen)
|
||||
IMETHOD_TYPE(TL_SEGMENT_MTID, code_generation_target *cgt, code_generation *gen)
|
||||
|
@ -79,6 +81,12 @@ int CodeGen::Targets::constant_segment(code_generation *gen) {
|
|||
return rv;
|
||||
}
|
||||
|
||||
int CodeGen::Targets::basic_constant_segment(code_generation *gen, int depth) {
|
||||
int rv = 0;
|
||||
IMETHOD_CALL(rv, gen->target, BASIC_CONSTANT_SEGMENT_MTID, gen, depth);
|
||||
return rv;
|
||||
}
|
||||
|
||||
int CodeGen::Targets::property_segment(code_generation *gen) {
|
||||
int rv = 0;
|
||||
IMETHOD_CALL(rv, gen->target, PROPERTY_SEGMENT_MTID, gen);
|
||||
|
|
|
@ -286,7 +286,9 @@ inter_package *Inter::Packages::by_url(inter_tree *I, text_stream *S) {
|
|||
PUT_TO(C, c);
|
||||
}
|
||||
}
|
||||
return Inter::Packages::by_name(at_P, C);
|
||||
inter_package *pack = Inter::Packages::by_name(at_P, C);
|
||||
DISCARD_TEXT(C);
|
||||
return pack;
|
||||
}
|
||||
return Inter::Packages::by_name(I->root_package, S);
|
||||
}
|
||||
|
|
|
@ -229,6 +229,8 @@ that's the end of the list and therefore the block. (There is no resource 0.)
|
|||
if (BinaryFiles::read_int32(fh, &st) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
unsigned int sc;
|
||||
if (BinaryFiles::read_int32(fh, &sc) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
unsigned int uniq;
|
||||
if (BinaryFiles::read_int32(fh, &uniq) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
|
||||
unsigned int L;
|
||||
if (BinaryFiles::read_int32(fh, &L) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
|
@ -249,6 +251,7 @@ that's the end of the list and therefore the block. (There is no resource 0.)
|
|||
inter_symbol *S = Inter::SymbolsTables::symbol_from_name_creating_at_ID(res->stored_symbols_table, name, X);
|
||||
Inter::Symbols::set_type(S, (int) st);
|
||||
Inter::Symbols::set_scope(S, (int) sc);
|
||||
if (uniq == 1) Inter::Symbols::set_flag(S, MAKE_NAME_UNIQUE);
|
||||
if (Str::len(trans) > 0) Inter::Symbols::set_translate(S, trans);
|
||||
|
||||
if (BinaryFiles::read_int32(fh, &L) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
|
@ -287,6 +290,10 @@ that's the end of the list and therefore the block. (There is no resource 0.)
|
|||
BinaryFiles::write_int32(fh, symb->symbol_ID);
|
||||
BinaryFiles::write_int32(fh, (unsigned int) Inter::Symbols::get_type(symb));
|
||||
BinaryFiles::write_int32(fh, (unsigned int) Inter::Symbols::get_scope(symb));
|
||||
if (Inter::Symbols::get_flag(symb, MAKE_NAME_UNIQUE))
|
||||
BinaryFiles::write_int32(fh, 1);
|
||||
else
|
||||
BinaryFiles::write_int32(fh, 0);
|
||||
BinaryFiles::write_int32(fh, (unsigned int) Str::len(symb->symbol_name));
|
||||
LOOP_THROUGH_TEXT(P, symb->symbol_name)
|
||||
BinaryFiles::write_int32(fh, (unsigned int) Str::get(P));
|
||||
|
|
|
@ -179,7 +179,27 @@ inform7/Internal/Languages/English/Syntax.preform: inform7/Tangled/Syntax.prefor
|
|||
# (Of course those other four phony targets are yet to be defined.)
|
||||
|
||||
.PHONY: intertemplate
|
||||
intertemplate: inform7/Internal/I6T/standard_rules/arch-16d.interb inform7/Internal/I6T/standard_rules/arch-16.interb inform7/Internal/I6T/standard_rules/arch-32d.interb inform7/Internal/I6T/standard_rules/arch-32.interb
|
||||
intertemplate: \
|
||||
inform7/Internal/I6T/basic_inform/arch-16d.interb \
|
||||
inform7/Internal/I6T/basic_inform/arch-16.interb \
|
||||
inform7/Internal/I6T/basic_inform/arch-32d.interb \
|
||||
inform7/Internal/I6T/basic_inform/arch-32.interb \
|
||||
inform7/Internal/I6T/standard_rules/arch-16d.interb \
|
||||
inform7/Internal/I6T/standard_rules/arch-16.interb \
|
||||
inform7/Internal/I6T/standard_rules/arch-32d.interb \
|
||||
inform7/Internal/I6T/standard_rules/arch-32.interb
|
||||
|
||||
inform7/Internal/I6T/basic_inform/arch-16d.interb: inform7/Internal/I6T/basic_inform/source/*.i6t
|
||||
$(INTERX) -architecture 16d -assimilate inform7/Internal/I6T/basic_inform
|
||||
|
||||
inform7/Internal/I6T/basic_inform/arch-16.interb: inform7/Internal/I6T/basic_inform/source/*.i6t
|
||||
$(INTERX) -architecture 16 -assimilate inform7/Internal/I6T/basic_inform
|
||||
|
||||
inform7/Internal/I6T/basic_inform/arch-32d.interb: inform7/Internal/I6T/basic_inform/source/*.i6t
|
||||
$(INTERX) -architecture 32d -assimilate inform7/Internal/I6T/basic_inform
|
||||
|
||||
inform7/Internal/I6T/basic_inform/arch-32.interb: inform7/Internal/I6T/basic_inform/source/*.i6t
|
||||
$(INTERX) -architecture 32 -assimilate inform7/Internal/I6T/basic_inform
|
||||
|
||||
inform7/Internal/I6T/standard_rules/arch-16d.interb: inform7/Internal/I6T/standard_rules/source/*.i6t
|
||||
$(INTERX) -architecture 16d -assimilate inform7/Internal/I6T/standard_rules
|
||||
|
@ -577,6 +597,13 @@ define transfer-i6-template
|
|||
cp -R -f inform7/Internal/I6T/standard_rules/source/*.i6t $(INTERNAL)/I6T/standard_rules/source
|
||||
cp -R -f inform7/Internal/I6T/standard_rules/*.interb $(INTERNAL)/I6T/standard_rules
|
||||
cp -R -f inform7/Internal/I6T/standard_rules/library_metadata.txt $(INTERNAL)/I6T/standard_rules
|
||||
mkdir -p "$(INTERNAL)/I6T/basic_inform"
|
||||
mkdir -p "$(INTERNAL)/I6T/basic_inform/source"
|
||||
rm -f $(INTERNAL)/I6T/basic_inform/source/*.i6t
|
||||
rm -f $(INTERNAL)/I6T/basic_inform/*.interb
|
||||
cp -R -f inform7/Internal/I6T/basic_inform/source/*.i6t $(INTERNAL)/I6T/basic_inform/source
|
||||
cp -R -f inform7/Internal/I6T/basic_inform/*.interb $(INTERNAL)/I6T/basic_inform
|
||||
cp -R -f inform7/Internal/I6T/basic_inform/library_metadata.txt $(INTERNAL)/I6T/basic_inform
|
||||
endef
|
||||
|
||||
$(INTERNAL)/Inter/default.interpipeline: inform7/Internal/Inter/*.interpipeline
|
||||
|
|
Loading…
Reference in a new issue