mirror of
https://github.com/ganelson/inform.git
synced 2024-07-03 07:24:58 +03:00
Abolished action iname renaming
This commit is contained in:
parent
00f98e0c5a
commit
20d024c37e
|
@ -129,12 +129,9 @@ create a new nonphrasal stack frame.
|
|||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">kernel_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">, *</span><span class="identifier">public_name</span><span class="plain"> = </span><span class="identifier">currently_compiling_iname</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">currently_compiling_in_frame</span><span class="plain">-</span><span class="element">>allocated_pointers</span><span class="plain">) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">currently_compiling_in_frame</span><span class="plain">-</span><span class="element">>no_formal_parameters_needed</span><span class="plain"> > 0)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Packaging::houseed_in_function</span><span class="plain">(</span><span class="identifier">public_name</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Packaging::houseed_in_function</span><span class="plain">(</span><span class="identifier">public_name</span><span class="plain">))</span>
|
||||
<span class="identifier">kernel_name</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_kernel_iname</span><span class="plain">(</span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">public_name</span><span class="plain">));</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"routine not housed in function"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="functiontext">Packaging::house_with</span><span class="plain">(</span><span class="identifier">kernel_name</span><span class="plain">, </span><span class="identifier">public_name</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"routine not housed in function"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">needed</span><span class="plain"> = </span><span class="functiontext">LocalVariables::count</span><span class="plain">(</span><span class="identifier">currently_compiling_in_frame</span><span class="plain">);</span>
|
||||
|
|
|
@ -425,7 +425,7 @@
|
|||
|
||||
<p class="endnote">The function Emit::kind_to_symbol is used in <a href="#SP4">§4</a>, <a href="#SP5">§5</a>.</p>
|
||||
|
||||
<p class="endnote">The function Emit::extern is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Emit::extern is used in 27/in (<a href="27-in.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::response is used in 17/rs (<a href="17-rs.html#SP7_1">§7.1</a>).</p>
|
||||
|
||||
|
|
|
@ -188,7 +188,7 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::function</span><span class="plain">(</span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</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">text_stream</span><span class="plain"> *</span><span class="identifier">trans</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">R</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">trans</span><span class="plain">) </span><span class="functiontext">InterNames::change_translation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">trans</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -204,17 +204,15 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain"> == </span><span class="functiontext">Hierarchy::template</span><span class="plain">()) {</span>
|
||||
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">);</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="functiontext">Hierarchy::template</span><span class="plain">());</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="functiontext">Emit::extern</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">);</span>
|
||||
<span class="functiontext">InterNames::externalise_symbol</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</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">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">,</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>datum_package_name</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::datum_text</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>datum_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">,</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">) && (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) {</span>
|
||||
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">);</span>
|
||||
|
@ -329,7 +327,7 @@
|
|||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">) > 0) {</span>
|
||||
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.by_imposition</span><span class="plain">) </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named_with_memo</span><span class="plain">(</span><span class="identifier">imposed_name</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="reserved">else</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">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">) == 0) </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named_with_memo</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
|
@ -362,7 +360,7 @@
|
|||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage not in enclosing superpackage"</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"NRL accessed inappropriately"</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package_type</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package_type</span><span class="plain">);</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">hierarchy_attachment_point</span><span class="plain"> {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">;</span>
|
||||
|
@ -412,7 +410,7 @@
|
|||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage in wrong superpackage"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">Packaging::supply_iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>counter</span><span class="plain">), </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>type</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">Packaging::supply_iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>counter</span><span class="plain">), </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>type</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
|
|
@ -148,6 +148,8 @@
|
|||
<span class="definitionkeyword">enum</span> <span class="constant">MISTAKEACTION_HL</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">ACTIONS_HAP</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">ACTION_BASE_NAME_HL</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">WAIT_HL</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">TRANSLATED_BASE_NAME_HL</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">DOUBLE_SHARP_NAME_HL</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">PERFORM_FN_HL</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">CHECK_RB_HL</span>
|
||||
|
@ -177,6 +179,8 @@
|
|||
<span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="constant">ACTIONS_HAP</span><span class="plain">, </span><span class="identifier">local_actions</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"action"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_action"</span><span class="plain">);</span>
|
||||
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">in_action</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::any_package_of_type</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"_action"</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">ACTION_BASE_NAME_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"A"</span><span class="plain">, </span><span class="functiontext">Translation::uniqued</span><span class="plain">(), </span><span class="identifier">in_action</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">WAIT_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Wait"</span><span class="plain">, </span><span class="functiontext">Translation::same</span><span class="plain">(), </span><span class="identifier">in_action</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">TRANSLATED_BASE_NAME_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::imposed</span><span class="plain">(), </span><span class="identifier">in_action</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="constant">DOUBLE_SHARP_NAME_HL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Translation::prefix</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"##"</span><span class="plain">), </span><span class="identifier">in_action</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="constant">PERFORM_FN_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"perform_fn"</span><span class="plain">, </span><span class="functiontext">Translation::suffix</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Sub"</span><span class="plain">), </span><span class="identifier">in_action</span><span class="plain">);</span>
|
||||
<span class="functiontext">HierarchyLocations::package</span><span class="plain">(</span><span class="constant">CHECK_RB_HL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"check_rb"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_rulebook"</span><span class="plain">, </span><span class="identifier">in_action</span><span class="plain">);</span>
|
||||
|
@ -1882,7 +1886,7 @@
|
|||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">main_pr</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Hierarchy::main</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">main_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">main_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"main"</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">plain_ptype</span><span class="plain">);</span>
|
||||
<span class="identifier">main_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"main"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">), </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">main_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
@ -1891,7 +1895,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">resources_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">resources_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"resources"</span><span class="plain">, </span><span class="functiontext">Hierarchy::main</span><span class="plain">()),</span>
|
||||
<span class="functiontext">Hierarchy::main</span><span class="plain">(), </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
|
||||
<span class="identifier">plain_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">resources_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
@ -1900,7 +1904,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">template_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">template_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">()),</span>
|
||||
<span class="functiontext">Hierarchy::resources</span><span class="plain">(), </span><span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">template_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ any text to be stored, is used only for a small proportion of inames.)
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">family</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">generated_by</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">unique_number</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">symbol</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">location_in_hierarchy</span><span class="plain">;</span>
|
||||
|
@ -84,7 +84,7 @@ any text to be stored, is used only for a small proportion of inames.)
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure inter_name is accessed in 27/hl, 27/pc and here.</p>
|
||||
<p class="endnote">The structure inter_name is private to this section.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>This implements the <code class="display"><span class="extract">%n</span></code> escape, which prints an iname:
|
||||
</p>
|
||||
|
@ -95,18 +95,18 @@ any text to be stored, is used only for a small proportion of inames.)
|
|||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = (</span><span class="reserved">inter_name</span><span class="plain"> *) </span><span class="identifier">vI</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<no-inter-name>"</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">iname</span><span class="plain">-</span><span class="element">>family</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">"bad inter_name"</span><span class="plain">);</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>generated_by</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">"bad inter_name"</span><span class="plain">);</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>generated_by</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DERIVED_INGEN</span><span class="plain">:</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>derived_prefix</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>generated_by</span><span class="plain">-</span><span class="element">>derived_prefix</span><span class="plain">);</span>
|
||||
<span class="functiontext">InterNames::writer</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">format_string</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>derived_suffix</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>generated_by</span><span class="plain">-</span><span class="element">>derived_suffix</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">UNIQUE_INGEN</span><span class="plain">:</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>name_stem</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>generated_by</span><span class="plain">-</span><span class="element">>name_stem</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">MULTIPLE_INGEN</span><span class="plain">:</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>name_stem</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>generated_by</span><span class="plain">-</span><span class="element">>name_stem</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> >= 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%d"</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain">);</span>
|
||||
<span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unknown ingen"</span><span class="plain">);</span>
|
||||
|
@ -137,7 +137,7 @@ for some inames it never will.
|
|||
<pre class="display">
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>generated_by</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
@ -225,23 +225,23 @@ a memo to attach):
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::multiple</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</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 family"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> == </span><span class="constant">UNIQUE_INGEN</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a family name"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> != </span><span class="constant">DERIVED_INGEN</span><span class="plain">) </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = ++</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>no_generated</span><span class="plain">;</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::multiple</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">G</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">G</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 generator"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">G</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> == </span><span class="constant">UNIQUE_INGEN</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a generator name"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new</span><span class="plain">(</span><span class="identifier">G</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">G</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> != </span><span class="constant">DERIVED_INGEN</span><span class="plain">) </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = ++</span><span class="identifier">G</span><span class="plain">-</span><span class="element">>no_generated</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::generated</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fix</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::multiple</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::generated</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">G</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fix</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::multiple</span><span class="plain">(</span><span class="identifier">G</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">fix</span><span class="plain"> != -1) </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>unique_number</span><span class="plain"> = </span><span class="identifier">fix</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::derived</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> != </span><span class="constant">DERIVED_INGEN</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a derived family"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::multiple</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::derived</span><span class="plain">(</span><span class="reserved">inter_name_generator</span><span class="plain"> *</span><span class="identifier">G</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">G</span><span class="plain">-</span><span class="element">>ingen</span><span class="plain"> != </span><span class="constant">DERIVED_INGEN</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a derived generator"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::multiple</span><span class="plain">(</span><span class="identifier">G</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>derived_from</span><span class="plain"> = </span><span class="identifier">from</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -255,39 +255,30 @@ a memo to attach):
|
|||
|
||||
<p class="endnote">The function InterNames::derived is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>An ugly necessity is that a handful of inames representing actions have to
|
||||
be renamed after creation, thanks to sentences such as:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>The taking action translates into I6 as "Take".</p>
|
||||
|
||||
</blockquote>
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b></p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::override_action_base_iname</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">to</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no such iname"</span><span class="plain">);</span>
|
||||
<span class="comment">if (iname->symbol) internal_error("too late to rename iname");</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>family</span><span class="plain">-</span><span class="element">>name_stem</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">to</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::clear</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>memo</span><span class="plain">);</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">InterNames::location</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</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">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function InterNames::override_action_base_iname appears nowhere else.</p>
|
||||
<p class="endnote">The function InterNames::location is used in 27/pc (<a href="27-pc.html#SP4">§4</a>, <a href="27-pc.html#SP5">§5</a>, <a href="27-pc.html#SP6">§6</a>, <a href="27-pc.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP8"></a><b>§8. Conversion of inames to symbols. </b>The purpose of inames is not quite to represent identifier names occurring in
|
||||
given packages inside the Inter hierarchy: it would be more accurate to say
|
||||
that they represent potential identifiers, which may or may not be used.
|
||||
At some point they will probably (but not certainly) undergo "conversion",
|
||||
when they are matched up with actual symbols in the symbols tables of the
|
||||
given packages. Once this is done, an iname can't be renamed or moved.
|
||||
given packages.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">Conversion is done on-demand, and thus left as late as possible. It happens
|
||||
automatically in the following function:
|
||||
automatically in one of the following two functions:
|
||||
</p>
|
||||
|
||||
|
||||
|
@ -303,6 +294,11 @@ automatically in the following function:
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::externalise_symbol</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">ext_iname</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</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">"iname already converted"</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="functiontext">Emit::extern</span><span class="plain">(</span><span class="identifier">ext_iname</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">);;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -408,6 +404,8 @@ automatically in the following function:
|
|||
|
||||
<p class="endnote">The function InterNames::to_symbol is used in 13/rsfk (<a href="13-rsfk.html#SP5">§5</a>), 15/epv (<a href="15-epv.html#SP4">§4</a>), 21/rl (<a href="21-rl.html#SP9">§9</a>, <a href="21-rl.html#SP11_2">§11.2</a>, <a href="21-rl.html#SP22">§22</a>), 26/iti (<a href="26-iti.html#SP9">§9</a>), 27/is (<a href="27-is.html#SP32">§32</a>), 27/ei (<a href="27-ei.html#SP3">§3</a>, <a href="27-ei.html#SP4">§4</a>, <a href="27-ei.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::externalise_symbol is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::change_translation is used in 5/un (<a href="5-un.html#SP1">§1</a>), 13/rsfk (<a href="13-rsfk.html#SP25">§25</a>), 15/pr (<a href="15-pr.html#SP21">§21</a>), 27/hl (<a href="27-hl.html#SP1">§1</a>, <a href="27-hl.html#SP1_1">§1.1</a>), 27/pc (<a href="27-pc.html#SP8">§8</a>).</p>
|
||||
|
||||
<p class="endnote">The function InterNames::get_translation is used in 15/pr (<a href="15-pr.html#SP22_1">§22.1</a>).</p>
|
||||
|
|
|
@ -84,13 +84,12 @@
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">parent</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">pt</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">pt</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">package_request</span><span class="plain">);</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>eventual_name</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">parent</span><span class="plain">) </span><span class="identifier">name</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain"> = </span><span class="identifier">parent</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain"> = </span><span class="identifier">pt</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>actual_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>parent_request</span><span class="plain"> = </span><span class="identifier">parent</span><span class="plain">;</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>parent_request</span><span class="plain"> = </span><span class="functiontext">InterNames::location</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>write_position</span><span class="plain"> = </span><span class="identifier">Inter::Bookmarks::new_IRS</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
|
||||
<span class="identifier">R</span><span class="plain">-</span><span class="element">>counters</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">R</span><span class="plain">;</span>
|
||||
|
@ -135,7 +134,7 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::location</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
|
@ -229,8 +228,9 @@
|
|||
|
||||
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="functiontext">Packaging::scope</span><span class="plain">(</span><span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't determine scope of null name"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>location_in_hierarchy</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">Inter::get_global_symbols</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="functiontext">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">));</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">InterNames::location</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::get_global_symbols</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="functiontext">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
@ -253,7 +253,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">generic_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">generic_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"generic"</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">()),</span>
|
||||
<span class="functiontext">Hierarchy::resources</span><span class="plain">(), </span><span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">generic_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
@ -262,7 +262,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">synoptic_pr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">synoptic_pr</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span>
|
||||
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"synoptic"</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">()),</span>
|
||||
<span class="functiontext">Hierarchy::resources</span><span class="plain">(), </span><span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">synoptic_pr</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
@ -290,7 +290,7 @@
|
|||
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">Packaging::resources_for_new_submodule</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">submodule_requests</span><span class="plain"> *</span><span class="identifier">SR</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">package_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">());</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">package_iname</span><span class="plain">, </span><span class="functiontext">Hierarchy::resources</span><span class="plain">(), </span><span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">package_iname</span><span class="plain">, </span><span class="identifier">module_ptype</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::initialise_submodules</span><span class="plain">(</span><span class="identifier">SR</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -385,7 +385,7 @@
|
|||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">sid</span><span class="plain">-</span><span class="element">>submodule_name</span><span class="plain">, </span><span class="identifier">parent</span><span class="plain">);</span>
|
||||
<span class="identifier">sr</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">submodule_request</span><span class="plain">);</span>
|
||||
<span class="identifier">sr</span><span class="plain">-</span><span class="element">>which_submodule</span><span class="plain"> = </span><span class="identifier">sid</span><span class="plain">;</span>
|
||||
<span class="identifier">sr</span><span class="plain">-</span><span class="element">>where_found</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">parent</span><span class="plain">, </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
|
||||
<span class="identifier">sr</span><span class="plain">-</span><span class="element">>where_found</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">plain_ptype</span><span class="plain">);</span>
|
||||
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">sr</span><span class="plain">, </span><span class="reserved">submodule_request</span><span class="plain">, </span><span class="identifier">SR</span><span class="plain">-</span><span class="element">>submodules</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">sr</span><span class="plain">-</span><span class="element">>where_found</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
@ -436,10 +436,9 @@
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Packaging::function</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">temp_iname</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R3</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">function_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"call"</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::house</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Packaging::function</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">temp_iname</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">function_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"call"</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">temp_iname</span><span class="plain">) {</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="string">"%n"</span><span class="plain">, </span><span class="identifier">temp_iname</span><span class="plain">);</span>
|
||||
|
@ -449,38 +448,25 @@
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">translation</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R3</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">function_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"call"</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::house</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">translation</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">function_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"call"</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">translation</span><span class="plain">)</span>
|
||||
<span class="functiontext">InterNames::change_translation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">translation</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Packaging::datum_text</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">translation</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R3</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">data_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">translation</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="functiontext">Packaging::house</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">R3</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Packaging::datum_text</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">translation</span><span class="plain">) {</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="identifier">function_iname</span><span class="plain">, </span><span class="identifier">data_ptype</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">translation</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Packaging::house</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">at</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</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">"can't house null name"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">at</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">"can't house nowhere"</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain"> = </span><span class="identifier">at</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Packaging::house_with</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">landlord</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</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">"can't house null name"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">landlord</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">"can't house with nobody"</span><span class="plain">);</span>
|
||||
<span class="identifier">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain"> = </span><span class="identifier">landlord</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Packaging::houseed_in_function</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</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">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</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">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">-</span><span class="element">>location_in_hierarchy</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain"> == </span><span class="identifier">function_ptype</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">InterNames::location</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain"> == </span><span class="identifier">function_ptype</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -497,10 +483,6 @@
|
|||
|
||||
<p class="endnote">The function Packaging::datum_text is used in 27/hl (<a href="27-hl.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::house appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Packaging::house_with is used in 26/rt (<a href="26-rt.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Packaging::houseed_in_function is used in 26/rt (<a href="26-rt.html#SP4">§4</a>), 27/ei (<a href="27-ei.html#SP4">§4</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
|
|
|
@ -83,7 +83,7 @@
|
|||
|
||||
<p class="endnote">The function Translation::uniqued is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_16">§1.16</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_46">§1.46</a>).</p>
|
||||
|
||||
<p class="endnote">The function Translation::imposed is used in 27/hr (<a href="27-hr.html#SP1_28">§1.28</a>).</p>
|
||||
<p class="endnote">The function Translation::imposed is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_28">§1.28</a>).</p>
|
||||
|
||||
<p class="endnote">The function Translation::to is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_10">§1.10</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_18">§1.18</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_48">§1.48</a>).</p>
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@ and maximum below are always equal.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">it_optional</span><span class="plain">; </span> <span class="comment">noun optional when describing the second noun?</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">abbreviable</span><span class="plain">; </span> <span class="comment">preposition optional when describing the second noun?</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">translated</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">translated_name</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">an_base_iname</span><span class="plain">; </span> <span class="comment">e.g., <code class="display"><span class="extract">Take</span></code></span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">an_iname</span><span class="plain">; </span> <span class="comment">e.g., <code class="display"><span class="extract">##Take</span></code></span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">an_routine_iname</span><span class="plain">; </span> <span class="comment">e.g., <code class="display"><span class="extract">TakeSub</span></code></span>
|
||||
|
@ -329,9 +330,10 @@ make that explicit: for instance, "taking" becomes "the taking action".
|
|||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>it_optional</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>abbreviable</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>translated</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>translated_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</span><span class="plain"> = </span><span class="identifier">Hierarchy::local_package</span><span class="plain">(</span><span class="identifier">ACTIONS_HAP</span><span class="plain">);</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_with_memo</span><span class="plain">(</span><span class="identifier">ACTION_BASE_NAME_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>use_verb_routine_in_I6_library</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>check_rules</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>carry_out_rules</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
@ -406,10 +408,7 @@ make that explicit: for instance, "taking" becomes "the taking action".
|
|||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>it_optional</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">an2</span><span class="plain">-</span><span class="element">>it_optional</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">make_ds</span><span class="plain">) {</span>
|
||||
<span class="identifier">InterNames::override_action_base_iname</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Wait"</span><span class="plain">);</span>
|
||||
<span class="functiontext">PL::Actions::double_sharp</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">an</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
@ -552,7 +551,7 @@ then that's what "listening" will match.)
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">PL::Actions::identifier</span><span class="plain">(</span><span class="reserved">action_name</span><span class="plain"> *</span><span class="identifier">an</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">InterNames::to_text</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">InterNames::to_text</span><span class="plain">(</span><span class="functiontext">PL::Actions::base_iname</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">action_name</span><span class="plain"> *</span><span class="functiontext">PL::Actions::Wait</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
|
@ -560,9 +559,21 @@ then that's what "listening" will match.)
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">waiting_action</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">PL::Actions::base_iname</span><span class="plain">(</span><span class="reserved">action_name</span><span class="plain"> *</span><span class="identifier">an</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</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">waiting_action</span><span class="plain"> == </span><span class="identifier">an</span><span class="plain">)</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_in</span><span class="plain">(</span><span class="identifier">WAIT_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</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">Str::len</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>translated_name</span><span class="plain">) > 0)</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_with_specific_name</span><span class="plain">(</span><span class="identifier">TRANSLATED_BASE_NAME_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>translated_name</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::make_iname_with_memo</span><span class="plain">(</span><span class="identifier">ACTION_BASE_NAME_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>present_name</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">PL::Actions::double_sharp</span><span class="plain">(</span><span class="reserved">action_name</span><span class="plain"> *</span><span class="identifier">an</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::derive_iname_in</span><span class="plain">(</span><span class="identifier">DOUBLE_SHARP_NAME_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</span><span class="plain">);</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::derive_iname_in</span><span class="plain">(</span><span class="identifier">DOUBLE_SHARP_NAME_HL</span><span class="plain">, </span><span class="functiontext">PL::Actions::base_iname</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">), </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</span><span class="plain">);</span>
|
||||
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</span><span class="plain">);</span>
|
||||
<span class="identifier">Emit::ds_named_pseudo_numeric_constant</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_iname</span><span class="plain">, </span><span class="identifier">K_value</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">an</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">);</span>
|
||||
<span class="identifier">InterNames::annotate_i</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_iname</span><span class="plain">, </span><span class="identifier">ACTION_IANN</span><span class="plain">, 1);</span>
|
||||
|
@ -573,7 +584,7 @@ then that's what "listening" will match.)
|
|||
|
||||
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">PL::Actions::Sub</span><span class="plain">(</span><span class="reserved">action_name</span><span class="plain"> *</span><span class="identifier">an</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_routine_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_routine_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::derive_iname_in</span><span class="plain">(</span><span class="identifier">PERFORM_FN_HL</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</span><span class="plain">);</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>an_routine_iname</span><span class="plain"> = </span><span class="identifier">Hierarchy::derive_iname_in</span><span class="plain">(</span><span class="identifier">PERFORM_FN_HL</span><span class="plain">, </span><span class="functiontext">PL::Actions::base_iname</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">), </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_package</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_routine_iname</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
@ -619,7 +630,9 @@ then that's what "listening" will match.)
|
|||
|
||||
<p class="endnote">The function PL::Actions::Wait appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function PL::Actions::double_sharp is used in <a href="#SP16">§16</a>, <a href="#SP37">§37</a>, 4/anl (<a href="4-anl.html#SP9">§9</a>), 4/ap (<a href="4-ap.html#SP29">§29</a>, <a href="4-ap.html#SP35">§35</a>).</p>
|
||||
<p class="endnote">The function PL::Actions::base_iname is used in <a href="#SP22">§22</a>.</p>
|
||||
|
||||
<p class="endnote">The function PL::Actions::double_sharp is used in <a href="#SP37">§37</a>, 4/anl (<a href="4-anl.html#SP9">§9</a>), 4/ap (<a href="4-ap.html#SP29">§29</a>, <a href="4-ap.html#SP35">§35</a>).</p>
|
||||
|
||||
<p class="endnote">The function PL::Actions::Sub is used in <a href="#SP36">§36</a>.</p>
|
||||
|
||||
|
@ -654,18 +667,18 @@ names of significance in the I6 library.
|
|||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>translated</span><span class="plain">) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Tried action name %W = %n\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain">);</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Tried action name %W = %n\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">, </span><span class="functiontext">PL::Actions::base_iname</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">));</span>
|
||||
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_TranslatesActionAlready</span><span class="plain">),</span>
|
||||
<span class="string">"this action has already been translated"</span><span class="plain">,</span>
|
||||
<span class="string">"so there must be some duplication somewhere."</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"too late for action base name translation"</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>translated</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TO</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">TO</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p2</span><span class="plain">)));</span>
|
||||
<span class="identifier">InterNames::override_action_base_iname</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain">, </span><span class="identifier">TO</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TO</span><span class="plain">);</span>
|
||||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">ACTION_CREATIONS</span><span class="plain">, </span><span class="string">"Translated action: $l as %n\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">-</span><span class="element">>an_base_iname</span><span class="plain">);</span>
|
||||
<span class="identifier">an</span><span class="plain">-</span><span class="element">>translated_name</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">-</span><span class="element">>translated_name</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p2</span><span class="plain">)));</span>
|
||||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">ACTION_CREATIONS</span><span class="plain">, </span><span class="string">"Translated action: $l as %n\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">an</span><span class="plain">, </span><span class="functiontext">PL::Actions::base_iname</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">PL::Actions::get_stem_length</span><span class="plain">(</span><span class="reserved">action_name</span><span class="plain"> *</span><span class="identifier">an</span><span class="plain">) {</span>
|
||||
|
|
|
@ -43,7 +43,7 @@ documentation.
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">documentation_ref</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">symbol</span><span class="plain">; </span> <span class="comment">Reference is by this piece of text</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">doc_symbol</span><span class="plain">; </span> <span class="comment">Reference is by this piece of text</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">section</span><span class="plain">; </span> <span class="comment">HTML page number</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">used_already</span><span class="plain">; </span> <span class="comment">Has this been used in a problem message already?</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">usage_count</span><span class="plain">; </span> <span class="comment">For statistical purposes</span>
|
||||
|
@ -59,7 +59,7 @@ documentation.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure documentation_ref is accessed in 3/ifs and here.</p>
|
||||
<p class="endnote">The structure documentation_ref is private to this section.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b></p>
|
||||
|
||||
|
@ -108,8 +108,8 @@ references:
|
|||
<span class="plain">}</span>
|
||||
<span class="identifier">LOOP_THROUGH_WORDING</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">SW</span><span class="plain">) {</span>
|
||||
<span class="reserved">documentation_ref</span><span class="plain"> *</span><span class="identifier">dr</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">documentation_ref</span><span class="plain">);</span>
|
||||
<span class="identifier">dr</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="string">"%+W"</span><span class="plain">, </span><span class="identifier">Wordings::one_word</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">));</span>
|
||||
<span class="identifier">dr</span><span class="plain">-</span><span class="element">>doc_symbol</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>doc_symbol</span><span class="plain">, </span><span class="string">"%+W"</span><span class="plain">, </span><span class="identifier">Wordings::one_word</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">));</span>
|
||||
<span class="identifier">dr</span><span class="plain">-</span><span class="element">>section</span><span class="plain"> = </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">RW</span><span class="plain">);</span>
|
||||
<span class="identifier">dr</span><span class="plain">-</span><span class="element">>used_already</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">dr</span><span class="plain">-</span><span class="element">>usage_count</span><span class="plain"> = 0;</span>
|
||||
|
@ -142,7 +142,7 @@ extension (say <code class="display"><span class="extract">doc24</span></code>);
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Index::DocReferences::validate_if_possible</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">temp</span><span class="plain">) {</span>
|
||||
<span class="reserved">documentation_ref</span><span class="plain"> *</span><span class="identifier">dr</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">, </span><span class="reserved">documentation_ref</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">temp</span><span class="plain">))</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>doc_symbol</span><span class="plain">, </span><span class="identifier">temp</span><span class="plain">))</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -160,7 +160,7 @@ extension (say <code class="display"><span class="extract">doc24</span></code>);
|
|||
<span class="identifier">wchar_t</span><span class="plain"> *</span><span class="functiontext">Index::DocReferences::link_if_possible_once</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">temp</span><span class="plain">, </span><span class="identifier">wchar_t</span><span class="plain"> **</span><span class="identifier">chap</span><span class="plain">, </span><span class="identifier">wchar_t</span><span class="plain"> **</span><span class="identifier">sec</span><span class="plain">) {</span>
|
||||
<span class="reserved">documentation_ref</span><span class="plain"> *</span><span class="identifier">dr</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">, </span><span class="reserved">documentation_ref</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">temp</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>doc_symbol</span><span class="plain">, </span><span class="identifier">temp</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>used_already</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="identifier">wchar_t</span><span class="plain"> *</span><span class="identifier">leaf</span><span class="plain"> = </span><span class="identifier">Lexer::word_text</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>section</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">chap</span><span class="plain"> = </span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>chapter_reference</span><span class="plain">;</span>
|
||||
|
@ -227,7 +227,7 @@ such a phrase, it increments the usage count by calling the following:
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Log::aspect_switched_on</span><span class="plain">(</span><span class="identifier">PHRASE_USAGE_DA</span><span class="plain">)) {</span>
|
||||
<span class="reserved">documentation_ref</span><span class="plain"> *</span><span class="identifier">dr</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">, </span><span class="reserved">documentation_ref</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>doc_symbol</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">)) {</span>
|
||||
<span class="identifier">extension_file</span><span class="plain"> *</span><span class="identifier">loc</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">at_word</span><span class="plain"> >= 0) {</span>
|
||||
<span class="identifier">source_file</span><span class="plain"> *</span><span class="identifier">pos</span><span class="plain"> = </span><span class="identifier">Lexer::file_of_origin</span><span class="plain">(</span><span class="identifier">at_word</span><span class="plain">);</span>
|
||||
|
@ -261,8 +261,8 @@ especially, but to be accumulated over a whole corpus of source texts, e.g.:
|
|||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">PHRASE_USAGE</span><span class="plain">, </span><span class="string">"The following shows how often each built-in phrase was used:\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="reserved">documentation_ref</span><span class="plain"> *</span><span class="identifier">dr</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">, </span><span class="reserved">documentation_ref</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::begins_with_wide_string</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"ph"</span><span class="plain">))</span>
|
||||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">PHRASE_USAGE</span><span class="plain">, </span><span class="string">"USAGE: %S %d %d %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">,</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::begins_with_wide_string</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>doc_symbol</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"ph"</span><span class="plain">))</span>
|
||||
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">PHRASE_USAGE</span><span class="plain">, </span><span class="string">"USAGE: %S %d %d %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>doc_symbol</span><span class="plain">,</span>
|
||||
<span class="identifier">dr</span><span class="plain">-</span><span class="element">>usage_count</span><span class="plain">, </span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>sr_usage_count</span><span class="plain">, </span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>ext_usage_count</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -447,7 +447,7 @@ nothing at all — not issuing any internal errors.
|
|||
<span class="reserved">documentation_ref</span><span class="plain"> *</span><span class="functiontext">Index::DocReferences::name_to_dr</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">fn</span><span class="plain">) {</span>
|
||||
<span class="reserved">documentation_ref</span><span class="plain"> *</span><span class="identifier">dr</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">, </span><span class="reserved">documentation_ref</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">fn</span><span class="plain">))</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>doc_symbol</span><span class="plain">, </span><span class="identifier">fn</span><span class="plain">))</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">dr</span><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Complain about a bad documentation reference</span> <span class="cwebmacronumber">13.1</span>><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
@ -471,7 +471,7 @@ nothing at all — not issuing any internal errors.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Bad ref was <%s>. Known references are:\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">fn</span><span class="plain">);</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">dr</span><span class="plain">, </span><span class="reserved">documentation_ref</span><span class="plain">)</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"%S = %+N\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>symbol</span><span class="plain">, </span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>section</span><span class="plain">);</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"%S = %+N\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>doc_symbol</span><span class="plain">, </span><span class="identifier">dr</span><span class="plain">-</span><span class="element">>section</span><span class="plain">);</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"Bad index documentation reference"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -82,12 +82,9 @@ void Routines::end_in_current_package(void) {
|
|||
inter_name *kernel_name = NULL, *public_name = currently_compiling_iname;
|
||||
if ((currently_compiling_in_frame->allocated_pointers) ||
|
||||
(currently_compiling_in_frame->no_formal_parameters_needed > 0)) {
|
||||
if (Packaging::houseed_in_function(public_name)) {
|
||||
if (Packaging::houseed_in_function(public_name))
|
||||
kernel_name = Hierarchy::make_kernel_iname(Packaging::home_of(public_name));
|
||||
} else {
|
||||
internal_error("routine not housed in function");
|
||||
}
|
||||
Packaging::house_with(kernel_name, public_name);
|
||||
else internal_error("routine not housed in function");
|
||||
}
|
||||
|
||||
int needed = LocalVariables::count(currently_compiling_in_frame);
|
||||
|
|
|
@ -178,7 +178,7 @@ inter_name *HierarchyLocations::find_by_name(text_stream *name) {
|
|||
}
|
||||
|
||||
inter_name *HierarchyLocations::function(package_request *R, text_stream *name, text_stream *trans) {
|
||||
inter_name *iname = Packaging::function(InterNames::explicitly_named(name, R), R, NULL);
|
||||
inter_name *iname = Packaging::function(InterNames::explicitly_named(name, R), NULL);
|
||||
if (trans) InterNames::change_translation(iname, trans);
|
||||
return iname;
|
||||
}
|
||||
|
@ -194,17 +194,15 @@ inter_name *HierarchyLocations::nrl_to_iname(named_resource_location *nrl) {
|
|||
if (nrl->requirements.this_mundane_package == Hierarchy::template()) {
|
||||
packaging_state save = Packaging::enter(nrl->requirements.this_mundane_package);
|
||||
nrl->equates_to_iname = InterNames::explicitly_named(nrl->access_name, Hierarchy::template());
|
||||
nrl->equates_to_iname->symbol = Emit::extern(nrl->access_name, K_value);
|
||||
InterNames::externalise_symbol(nrl->equates_to_iname, nrl->access_name);
|
||||
Packaging::exit(save);
|
||||
} else if (Str::len(nrl->function_package_name) > 0) {
|
||||
nrl->equates_to_iname = Packaging::function_text(
|
||||
InterNames::explicitly_named(nrl->function_package_name, nrl->requirements.this_mundane_package),
|
||||
nrl->requirements.this_mundane_package,
|
||||
nrl->access_name);
|
||||
} else if (Str::len(nrl->datum_package_name) > 0) {
|
||||
nrl->equates_to_iname = Packaging::datum_text(
|
||||
InterNames::explicitly_named(nrl->datum_package_name, nrl->requirements.this_mundane_package),
|
||||
nrl->requirements.this_mundane_package,
|
||||
nrl->access_name);
|
||||
} else if ((nrl->requirements.this_mundane_package) && (nrl->equates_to_iname == NULL)) {
|
||||
nrl->equates_to_iname = InterNames::explicitly_named(nrl->access_name, nrl->requirements.this_mundane_package);
|
||||
|
@ -265,7 +263,7 @@ inter_name *HierarchyLocations::find_in_package(int id, package_request *P, word
|
|||
@<Make the actual iname@> =
|
||||
if (Str::len(nrl->function_package_name) > 0) {
|
||||
iname = Packaging::function(
|
||||
InterNames::explicitly_named(nrl->function_package_name, P), P, NULL);
|
||||
InterNames::explicitly_named(nrl->function_package_name, P), NULL);
|
||||
} else {
|
||||
if (nrl->trans.by_imposition) iname = InterNames::explicitly_named_with_memo(imposed_name, P, W);
|
||||
else if (Str::len(nrl->access_name) == 0) iname = InterNames::explicitly_named_with_memo(T, P, W);
|
||||
|
@ -290,7 +288,7 @@ package_request *HierarchyLocations::package_in_package(int id, package_request
|
|||
internal_error("subpackage not in enclosing superpackage");
|
||||
} else internal_error("NRL accessed inappropriately");
|
||||
|
||||
return Packaging::request(InterNames::explicitly_named(nrl->access_name, P), P, nrl->package_type);
|
||||
return Packaging::request(InterNames::explicitly_named(nrl->access_name, P), nrl->package_type);
|
||||
}
|
||||
|
||||
=
|
||||
|
@ -342,7 +340,7 @@ package_request *HierarchyLocations::attach_new_package(compilation_module *C, p
|
|||
internal_error("subpackage in wrong superpackage");
|
||||
}
|
||||
|
||||
return Packaging::request(Packaging::supply_iname(R, hap->counter), R, hap->type);
|
||||
return Packaging::request(Packaging::supply_iname(R, hap->counter), hap->type);
|
||||
}
|
||||
|
||||
@
|
||||
|
|
|
@ -119,6 +119,8 @@ void Hierarchy::establish(void) {
|
|||
|
||||
@e ACTIONS_HAP
|
||||
@e ACTION_BASE_NAME_HL
|
||||
@e WAIT_HL
|
||||
@e TRANSLATED_BASE_NAME_HL
|
||||
@e DOUBLE_SHARP_NAME_HL
|
||||
@e PERFORM_FN_HL
|
||||
@e CHECK_RB_HL
|
||||
|
@ -144,6 +146,8 @@ void Hierarchy::establish(void) {
|
|||
HierarchyLocations::ap(ACTIONS_HAP, local_actions, I"action", I"_action");
|
||||
location_requirement in_action = HierarchyLocations::any_package_of_type(I"_action");
|
||||
HierarchyLocations::con(ACTION_BASE_NAME_HL, I"A", Translation::uniqued(), in_action);
|
||||
HierarchyLocations::con(WAIT_HL, I"Wait", Translation::same(), in_action);
|
||||
HierarchyLocations::con(TRANSLATED_BASE_NAME_HL, NULL, Translation::imposed(), in_action);
|
||||
HierarchyLocations::con(DOUBLE_SHARP_NAME_HL, NULL, Translation::prefix(I"##"), in_action);
|
||||
HierarchyLocations::func(PERFORM_FN_HL, I"perform_fn", Translation::suffix(I"Sub"), in_action);
|
||||
HierarchyLocations::package(CHECK_RB_HL, I"check_rb", I"_rulebook", in_action);
|
||||
|
@ -1570,7 +1574,7 @@ inter_name *Hierarchy::find_by_name(text_stream *name) {
|
|||
package_request *main_pr = NULL;
|
||||
package_request *Hierarchy::main(void) {
|
||||
if (main_pr == NULL)
|
||||
main_pr = Packaging::request(InterNames::explicitly_named(I"main", NULL), NULL, plain_ptype);
|
||||
main_pr = Packaging::request(InterNames::explicitly_named(I"main", NULL), plain_ptype);
|
||||
return main_pr;
|
||||
}
|
||||
|
||||
|
@ -1579,7 +1583,7 @@ package_request *Hierarchy::resources(void) {
|
|||
if (resources_pr == NULL)
|
||||
resources_pr = Packaging::request(
|
||||
InterNames::explicitly_named(I"resources", Hierarchy::main()),
|
||||
Hierarchy::main(), plain_ptype);
|
||||
plain_ptype);
|
||||
return resources_pr;
|
||||
}
|
||||
|
||||
|
@ -1588,7 +1592,7 @@ package_request *Hierarchy::template(void) {
|
|||
if (template_pr == NULL)
|
||||
template_pr = Packaging::request(
|
||||
InterNames::explicitly_named(I"template", Hierarchy::resources()),
|
||||
Hierarchy::resources(), module_ptype);
|
||||
module_ptype);
|
||||
return template_pr;
|
||||
}
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ any text to be stored, is used only for a small proportion of inames.)
|
|||
|
||||
=
|
||||
typedef struct inter_name {
|
||||
struct inter_name_generator *family;
|
||||
struct inter_name_generator *generated_by;
|
||||
int unique_number;
|
||||
struct inter_symbol *symbol;
|
||||
struct package_request *location_in_hierarchy;
|
||||
|
@ -64,18 +64,18 @@ void InterNames::writer(OUTPUT_STREAM, char *format_string, void *vI) {
|
|||
inter_name *iname = (inter_name *) vI;
|
||||
if (iname == NULL) WRITE("<no-inter-name>");
|
||||
else {
|
||||
if (iname->family == NULL) internal_error("bad inter_name");
|
||||
switch (iname->family->ingen) {
|
||||
if (iname->generated_by == NULL) internal_error("bad inter_name");
|
||||
switch (iname->generated_by->ingen) {
|
||||
case DERIVED_INGEN:
|
||||
WRITE("%S", iname->family->derived_prefix);
|
||||
WRITE("%S", iname->generated_by->derived_prefix);
|
||||
InterNames::writer(OUT, format_string, iname->derived_from);
|
||||
WRITE("%S", iname->family->derived_suffix);
|
||||
WRITE("%S", iname->generated_by->derived_suffix);
|
||||
break;
|
||||
case UNIQUE_INGEN:
|
||||
WRITE("%S", iname->family->name_stem);
|
||||
WRITE("%S", iname->generated_by->name_stem);
|
||||
break;
|
||||
case MULTIPLE_INGEN:
|
||||
WRITE("%S", iname->family->name_stem);
|
||||
WRITE("%S", iname->generated_by->name_stem);
|
||||
if (iname->unique_number >= 0) WRITE("%d", iname->unique_number);
|
||||
break;
|
||||
default: internal_error("unknown ingen");
|
||||
|
@ -99,7 +99,7 @@ for some inames it never will.
|
|||
=
|
||||
inter_name *InterNames::new(inter_name_generator *F, package_request *R, wording W) {
|
||||
inter_name *iname = CREATE(inter_name);
|
||||
iname->family = F;
|
||||
iname->generated_by = F;
|
||||
iname->unique_number = 0;
|
||||
iname->symbol = NULL;
|
||||
iname->derived_from = NULL;
|
||||
|
@ -151,38 +151,31 @@ inter_name *InterNames::explicitly_named(text_stream *name, package_request *R)
|
|||
@ Second, the generated or derived cases:
|
||||
|
||||
=
|
||||
inter_name *InterNames::multiple(inter_name_generator *F, package_request *R, wording W) {
|
||||
if (F == NULL) internal_error("no family");
|
||||
if (F->ingen == UNIQUE_INGEN) internal_error("not a family name");
|
||||
inter_name *iname = InterNames::new(F, R, W);
|
||||
if (F->ingen != DERIVED_INGEN) iname->unique_number = ++F->no_generated;
|
||||
inter_name *InterNames::multiple(inter_name_generator *G, package_request *R, wording W) {
|
||||
if (G == NULL) internal_error("no generator");
|
||||
if (G->ingen == UNIQUE_INGEN) internal_error("not a generator name");
|
||||
inter_name *iname = InterNames::new(G, R, W);
|
||||
if (G->ingen != DERIVED_INGEN) iname->unique_number = ++G->no_generated;
|
||||
return iname;
|
||||
}
|
||||
|
||||
inter_name *InterNames::generated(inter_name_generator *F, int fix, wording W) {
|
||||
inter_name *iname = InterNames::multiple(F, NULL, W);
|
||||
inter_name *InterNames::generated(inter_name_generator *G, int fix, wording W) {
|
||||
inter_name *iname = InterNames::multiple(G, NULL, W);
|
||||
if (fix != -1) iname->unique_number = fix;
|
||||
return iname;
|
||||
}
|
||||
|
||||
inter_name *InterNames::derived(inter_name_generator *F, inter_name *from, wording W) {
|
||||
if (F->ingen != DERIVED_INGEN) internal_error("not a derived family");
|
||||
inter_name *iname = InterNames::multiple(F, from->location_in_hierarchy, W);
|
||||
inter_name *InterNames::derived(inter_name_generator *G, inter_name *from, wording W) {
|
||||
if (G->ingen != DERIVED_INGEN) internal_error("not a derived generator");
|
||||
inter_name *iname = InterNames::multiple(G, from->location_in_hierarchy, W);
|
||||
iname->derived_from = from;
|
||||
return iname;
|
||||
}
|
||||
|
||||
@ An ugly necessity is that a handful of inames representing actions have to
|
||||
be renamed after creation, thanks to sentences such as:
|
||||
|
||||
>> The taking action translates into I6 as "Take".
|
||||
|
||||
=
|
||||
void InterNames::override_action_base_iname(inter_name *iname, text_stream *to) {
|
||||
if (iname == NULL) internal_error("no such iname");
|
||||
// if (iname->symbol) internal_error("too late to rename iname");
|
||||
iname->family->name_stem = Str::duplicate(to);
|
||||
Str::clear(iname->memo);
|
||||
@ =
|
||||
package_request *InterNames::location(inter_name *iname) {
|
||||
if (iname == NULL) return NULL;
|
||||
return iname->location_in_hierarchy;
|
||||
}
|
||||
|
||||
@h Conversion of inames to symbols.
|
||||
|
@ -191,10 +184,10 @@ given packages inside the Inter hierarchy: it would be more accurate to say
|
|||
that they represent potential identifiers, which may or may not be used.
|
||||
At some point they will probably (but not certainly) undergo "conversion",
|
||||
when they are matched up with actual symbols in the symbols tables of the
|
||||
given packages. Once this is done, an iname can't be renamed or moved.
|
||||
given packages.
|
||||
|
||||
Conversion is done on-demand, and thus left as late as possible. It happens
|
||||
automatically in the following function:
|
||||
automatically in one of the following two functions:
|
||||
|
||||
=
|
||||
inter_symbol *InterNames::to_symbol(inter_name *iname) {
|
||||
|
@ -208,6 +201,11 @@ inter_symbol *InterNames::to_symbol(inter_name *iname) {
|
|||
return iname->symbol;
|
||||
}
|
||||
|
||||
void InterNames::externalise_symbol(inter_name *iname, inter_name *ext_iname) {
|
||||
if (iname->symbol != NULL) internal_error("iname already converted");
|
||||
iname->symbol = Emit::extern(ext_iname, K_value);;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -50,13 +50,12 @@ typedef struct submodule_request_counter {
|
|||
} submodule_request_counter;
|
||||
|
||||
@ =
|
||||
package_request *Packaging::request(inter_name *name, package_request *parent, inter_symbol *pt) {
|
||||
package_request *Packaging::request(inter_name *name, inter_symbol *pt) {
|
||||
package_request *R = CREATE(package_request);
|
||||
R->eventual_name = name;
|
||||
if (parent) name->location_in_hierarchy = parent;
|
||||
R->eventual_type = pt;
|
||||
R->actual_package = NULL;
|
||||
R->parent_request = parent;
|
||||
R->parent_request = InterNames::location(name);
|
||||
R->write_position = Inter::Bookmarks::new_IRS(Emit::repository());
|
||||
R->counters = NULL;
|
||||
return R;
|
||||
|
@ -91,7 +90,7 @@ packaging_state Packaging::stateless(void) {
|
|||
}
|
||||
|
||||
package_request *Packaging::home_of(inter_name *N) {
|
||||
return N->location_in_hierarchy;
|
||||
return InterNames::location(N);
|
||||
}
|
||||
|
||||
packaging_state Packaging::enter_home_of(inter_name *N) {
|
||||
|
@ -167,8 +166,9 @@ inter_package *Packaging::incarnate(package_request *R) {
|
|||
|
||||
inter_symbols_table *Packaging::scope(inter_repository *I, inter_name *N) {
|
||||
if (N == NULL) internal_error("can't determine scope of null name");
|
||||
if (N->location_in_hierarchy == NULL) return Inter::get_global_symbols(Emit::repository());
|
||||
return Inter::Packages::scope(Packaging::incarnate(N->location_in_hierarchy));
|
||||
package_request *P = InterNames::location(N);
|
||||
if (P == NULL) return Inter::get_global_symbols(Emit::repository());
|
||||
return Inter::Packages::scope(Packaging::incarnate(P));
|
||||
}
|
||||
|
||||
@ =
|
||||
|
@ -177,7 +177,7 @@ package_request *Packaging::request_generic(void) {
|
|||
if (generic_pr == NULL)
|
||||
generic_pr = Packaging::request(
|
||||
InterNames::explicitly_named(I"generic", Hierarchy::resources()),
|
||||
Hierarchy::resources(), module_ptype);
|
||||
module_ptype);
|
||||
return generic_pr;
|
||||
}
|
||||
|
||||
|
@ -186,7 +186,7 @@ package_request *Packaging::request_synoptic(void) {
|
|||
if (synoptic_pr == NULL)
|
||||
synoptic_pr = Packaging::request(
|
||||
InterNames::explicitly_named(I"synoptic", Hierarchy::resources()),
|
||||
Hierarchy::resources(), module_ptype);
|
||||
module_ptype);
|
||||
return synoptic_pr;
|
||||
}
|
||||
|
||||
|
@ -214,7 +214,7 @@ typedef struct submodule_requests {
|
|||
|
||||
package_request *Packaging::resources_for_new_submodule(text_stream *name, submodule_requests *SR) {
|
||||
inter_name *package_iname = InterNames::explicitly_named(name, Hierarchy::resources());
|
||||
package_request *P = Packaging::request(package_iname, Hierarchy::resources(), module_ptype);
|
||||
package_request *P = Packaging::request(package_iname, module_ptype);
|
||||
Packaging::initialise_submodules(SR);
|
||||
return P;
|
||||
}
|
||||
|
@ -277,7 +277,7 @@ package_request *Packaging::synoptic_resource(submodule_identity *sid) {
|
|||
inter_name *iname = InterNames::explicitly_named(sid->submodule_name, parent);
|
||||
sr = CREATE(submodule_request);
|
||||
sr->which_submodule = sid;
|
||||
sr->where_found = Packaging::request(iname, parent, plain_ptype);
|
||||
sr->where_found = Packaging::request(iname, plain_ptype);
|
||||
ADD_TO_LINKED_LIST(sr, submodule_request, SR->submodules);
|
||||
return sr->where_found;
|
||||
|
||||
|
@ -320,10 +320,9 @@ inter_name *Packaging::supply_iname(package_request *R, int what_for) {
|
|||
return iname;
|
||||
}
|
||||
|
||||
inter_name *Packaging::function(inter_name *function_iname, package_request *R2, inter_name *temp_iname) {
|
||||
package_request *R3 = Packaging::request(function_iname, R2, function_ptype);
|
||||
inter_name *iname = InterNames::explicitly_named(I"call", R3);
|
||||
Packaging::house(iname, R3);
|
||||
inter_name *Packaging::function(inter_name *function_iname, inter_name *temp_iname) {
|
||||
package_request *P = Packaging::request(function_iname, function_ptype);
|
||||
inter_name *iname = InterNames::explicitly_named(I"call", P);
|
||||
if (temp_iname) {
|
||||
TEMPORARY_TEXT(T);
|
||||
WRITE_TO(T, "%n", temp_iname);
|
||||
|
@ -333,37 +332,24 @@ inter_name *Packaging::function(inter_name *function_iname, package_request *R2,
|
|||
return iname;
|
||||
}
|
||||
|
||||
inter_name *Packaging::function_text(inter_name *function_iname, package_request *R2, text_stream *translation) {
|
||||
package_request *R3 = Packaging::request(function_iname, R2, function_ptype);
|
||||
inter_name *iname = InterNames::explicitly_named(I"call", R3);
|
||||
Packaging::house(iname, R3);
|
||||
inter_name *Packaging::function_text(inter_name *function_iname, text_stream *translation) {
|
||||
package_request *P = Packaging::request(function_iname, function_ptype);
|
||||
inter_name *iname = InterNames::explicitly_named(I"call", P);
|
||||
if (translation)
|
||||
InterNames::change_translation(iname, translation);
|
||||
return iname;
|
||||
}
|
||||
|
||||
inter_name *Packaging::datum_text(inter_name *function_iname, package_request *R2, text_stream *translation) {
|
||||
package_request *R3 = Packaging::request(function_iname, R2, data_ptype);
|
||||
inter_name *iname = InterNames::explicitly_named(translation, R3);
|
||||
Packaging::house(iname, R3);
|
||||
inter_name *Packaging::datum_text(inter_name *function_iname, text_stream *translation) {
|
||||
package_request *P = Packaging::request(function_iname, data_ptype);
|
||||
inter_name *iname = InterNames::explicitly_named(translation, P);
|
||||
return iname;
|
||||
}
|
||||
|
||||
void Packaging::house(inter_name *iname, package_request *at) {
|
||||
if (iname == NULL) internal_error("can't house null name");
|
||||
if (at == NULL) internal_error("can't house nowhere");
|
||||
iname->location_in_hierarchy = at;
|
||||
}
|
||||
|
||||
void Packaging::house_with(inter_name *iname, inter_name *landlord) {
|
||||
if (iname == NULL) internal_error("can't house null name");
|
||||
if (landlord == NULL) internal_error("can't house with nobody");
|
||||
iname->location_in_hierarchy = landlord->location_in_hierarchy;
|
||||
}
|
||||
|
||||
int Packaging::houseed_in_function(inter_name *iname) {
|
||||
if (iname == NULL) return FALSE;
|
||||
if (iname->location_in_hierarchy == NULL) return FALSE;
|
||||
if (iname->location_in_hierarchy->eventual_type == function_ptype) return TRUE;
|
||||
package_request *P = InterNames::location(iname);
|
||||
if (P == NULL) return FALSE;
|
||||
if (P->eventual_type == function_ptype) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ typedef struct action_name {
|
|||
int it_optional; /* noun optional when describing the second noun? */
|
||||
int abbreviable; /* preposition optional when describing the second noun? */
|
||||
int translated;
|
||||
struct text_stream *translated_name;
|
||||
struct inter_name *an_base_iname; /* e.g., |Take| */
|
||||
struct inter_name *an_iname; /* e.g., |##Take| */
|
||||
struct inter_name *an_routine_iname; /* e.g., |TakeSub| */
|
||||
|
@ -231,9 +232,10 @@ action_name *PL::Actions::act_new(wording W, int implemented_by_I7) {
|
|||
an->it_optional = TRUE;
|
||||
an->abbreviable = FALSE;
|
||||
an->translated = FALSE;
|
||||
an->translated_name = NULL;
|
||||
|
||||
an->an_package = Hierarchy::local_package(ACTIONS_HAP);
|
||||
an->an_base_iname = Hierarchy::make_iname_with_memo(ACTION_BASE_NAME_HL, an->an_package, W);
|
||||
an->an_base_iname = NULL;
|
||||
an->use_verb_routine_in_I6_library = TRUE;
|
||||
an->check_rules = NULL;
|
||||
an->carry_out_rules = NULL;
|
||||
|
@ -308,10 +310,7 @@ action_name *PL::Actions::act_new(wording W, int implemented_by_I7) {
|
|||
an->it_optional = FALSE;
|
||||
an2->it_optional = FALSE;
|
||||
}
|
||||
if (make_ds) {
|
||||
InterNames::override_action_base_iname(an->an_base_iname, I"Wait");
|
||||
PL::Actions::double_sharp(an);
|
||||
}
|
||||
|
||||
return an;
|
||||
}
|
||||
|
||||
|
@ -413,7 +412,7 @@ int PL::Actions::abbreviable(action_name *an) {
|
|||
}
|
||||
|
||||
text_stream *PL::Actions::identifier(action_name *an) {
|
||||
return InterNames::to_text(an->an_base_iname);
|
||||
return InterNames::to_text(PL::Actions::base_iname(an));
|
||||
}
|
||||
|
||||
action_name *PL::Actions::Wait(void) {
|
||||
|
@ -421,9 +420,21 @@ action_name *PL::Actions::Wait(void) {
|
|||
return waiting_action;
|
||||
}
|
||||
|
||||
inter_name *PL::Actions::base_iname(action_name *an) {
|
||||
if (an->an_base_iname == NULL) {
|
||||
if (waiting_action == an)
|
||||
an->an_base_iname = Hierarchy::make_iname_in(WAIT_HL, an->an_package);
|
||||
else if (Str::len(an->translated_name) > 0)
|
||||
an->an_base_iname = Hierarchy::make_iname_with_specific_name(TRANSLATED_BASE_NAME_HL, an->translated_name, an->an_package);
|
||||
else
|
||||
an->an_base_iname = Hierarchy::make_iname_with_memo(ACTION_BASE_NAME_HL, an->an_package, an->present_name);
|
||||
}
|
||||
return an->an_base_iname;
|
||||
}
|
||||
|
||||
inter_name *PL::Actions::double_sharp(action_name *an) {
|
||||
if (an->an_iname == NULL) {
|
||||
an->an_iname = Hierarchy::derive_iname_in(DOUBLE_SHARP_NAME_HL, an->an_base_iname, an->an_package);
|
||||
an->an_iname = Hierarchy::derive_iname_in(DOUBLE_SHARP_NAME_HL, PL::Actions::base_iname(an), an->an_package);
|
||||
packaging_state save = Packaging::enter(an->an_package);
|
||||
Emit::ds_named_pseudo_numeric_constant(an->an_iname, K_value, (inter_t) an->allocation_id);
|
||||
InterNames::annotate_i(an->an_iname, ACTION_IANN, 1);
|
||||
|
@ -434,7 +445,7 @@ inter_name *PL::Actions::double_sharp(action_name *an) {
|
|||
|
||||
inter_name *PL::Actions::Sub(action_name *an) {
|
||||
if (an->an_routine_iname == NULL)
|
||||
an->an_routine_iname = Hierarchy::derive_iname_in(PERFORM_FN_HL, an->an_base_iname, an->an_package);
|
||||
an->an_routine_iname = Hierarchy::derive_iname_in(PERFORM_FN_HL, PL::Actions::base_iname(an), an->an_package);
|
||||
return an->an_routine_iname;
|
||||
}
|
||||
|
||||
|
@ -486,18 +497,18 @@ void PL::Actions::translates(wording W, parse_node *p2) {
|
|||
return;
|
||||
}
|
||||
if (an->translated) {
|
||||
LOG("Tried action name %W = %n\n", W, an->an_base_iname);
|
||||
LOG("Tried action name %W = %n\n", W, PL::Actions::base_iname(an));
|
||||
Problems::Issue::sentence_problem(_p_(PM_TranslatesActionAlready),
|
||||
"this action has already been translated",
|
||||
"so there must be some duplication somewhere.");
|
||||
return;
|
||||
}
|
||||
if (an->an_base_iname) internal_error("too late for action base name translation");
|
||||
|
||||
an->translated = TRUE;
|
||||
TEMPORARY_TEXT(TO);
|
||||
WRITE_TO(TO, "%N", Wordings::first_wn(ParseTree::get_text(p2)));
|
||||
InterNames::override_action_base_iname(an->an_base_iname, TO);
|
||||
DISCARD_TEXT(TO);
|
||||
LOGIF(ACTION_CREATIONS, "Translated action: $l as %n\n", an, an->an_base_iname);
|
||||
an->translated_name = Str::new();
|
||||
WRITE_TO(an->translated_name, "%N", Wordings::first_wn(ParseTree::get_text(p2)));
|
||||
LOGIF(ACTION_CREATIONS, "Translated action: $l as %n\n", an, PL::Actions::base_iname(an));
|
||||
}
|
||||
|
||||
int PL::Actions::get_stem_length(action_name *an) {
|
||||
|
|
|
@ -25,7 +25,7 @@ documentation.
|
|||
|
||||
=
|
||||
typedef struct documentation_ref {
|
||||
struct text_stream *symbol; /* Reference is by this piece of text */
|
||||
struct text_stream *doc_symbol; /* Reference is by this piece of text */
|
||||
int section; /* HTML page number */
|
||||
int used_already; /* Has this been used in a problem message already? */
|
||||
int usage_count; /* For statistical purposes */
|
||||
|
@ -81,8 +81,8 @@ void Index::DocReferences::dref_new(parse_node *p) {
|
|||
}
|
||||
LOOP_THROUGH_WORDING(i, SW) {
|
||||
documentation_ref *dr = CREATE(documentation_ref);
|
||||
dr->symbol = Str::new();
|
||||
WRITE_TO(dr->symbol, "%+W", Wordings::one_word(i));
|
||||
dr->doc_symbol = Str::new();
|
||||
WRITE_TO(dr->doc_symbol, "%+W", Wordings::one_word(i));
|
||||
dr->section = Wordings::first_wn(RW);
|
||||
dr->used_already = FALSE;
|
||||
dr->usage_count = 0;
|
||||
|
@ -106,7 +106,7 @@ extension (say |doc24|); if it does not exist, we return NULL.
|
|||
int Index::DocReferences::validate_if_possible(text_stream *temp) {
|
||||
documentation_ref *dr;
|
||||
LOOP_OVER(dr, documentation_ref)
|
||||
if (Str::eq(dr->symbol, temp))
|
||||
if (Str::eq(dr->doc_symbol, temp))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ int Index::DocReferences::validate_if_possible(text_stream *temp) {
|
|||
wchar_t *Index::DocReferences::link_if_possible_once(text_stream *temp, wchar_t **chap, wchar_t **sec) {
|
||||
documentation_ref *dr;
|
||||
LOOP_OVER(dr, documentation_ref)
|
||||
if (Str::eq(dr->symbol, temp)) {
|
||||
if (Str::eq(dr->doc_symbol, temp)) {
|
||||
if (dr->used_already == FALSE) {
|
||||
wchar_t *leaf = Lexer::word_text(dr->section);
|
||||
*chap = dr->chapter_reference;
|
||||
|
@ -164,7 +164,7 @@ void Index::DocReferences::doc_mark_used(text_stream *symb, int at_word) {
|
|||
if (Log::aspect_switched_on(PHRASE_USAGE_DA)) {
|
||||
documentation_ref *dr;
|
||||
LOOP_OVER(dr, documentation_ref) {
|
||||
if (Str::eq(dr->symbol, symb)) {
|
||||
if (Str::eq(dr->doc_symbol, symb)) {
|
||||
extension_file *loc = NULL;
|
||||
if (at_word >= 0) {
|
||||
source_file *pos = Lexer::file_of_origin(at_word);
|
||||
|
@ -190,8 +190,8 @@ void Index::DocReferences::log_statistics(void) {
|
|||
LOGIF(PHRASE_USAGE, "The following shows how often each built-in phrase was used:\n");
|
||||
documentation_ref *dr;
|
||||
LOOP_OVER(dr, documentation_ref)
|
||||
if (Str::begins_with_wide_string(dr->symbol, L"ph"))
|
||||
LOGIF(PHRASE_USAGE, "USAGE: %S %d %d %d\n", dr->symbol,
|
||||
if (Str::begins_with_wide_string(dr->doc_symbol, L"ph"))
|
||||
LOGIF(PHRASE_USAGE, "USAGE: %S %d %d %d\n", dr->doc_symbol,
|
||||
dr->usage_count, dr->sr_usage_count, dr->ext_usage_count);
|
||||
}
|
||||
|
||||
|
@ -314,7 +314,7 @@ and we need to search fairly seldom:
|
|||
documentation_ref *Index::DocReferences::name_to_dr(text_stream *fn) {
|
||||
documentation_ref *dr;
|
||||
LOOP_OVER(dr, documentation_ref)
|
||||
if (Str::eq(dr->symbol, fn))
|
||||
if (Str::eq(dr->doc_symbol, fn))
|
||||
return dr;
|
||||
@<Complain about a bad documentation reference@>;
|
||||
return NULL;
|
||||
|
@ -326,6 +326,6 @@ documentation_ref *Index::DocReferences::name_to_dr(text_stream *fn) {
|
|||
if (problem_count == 0) {
|
||||
LOG("Bad ref was <%s>. Known references are:\n", fn);
|
||||
LOOP_OVER(dr, documentation_ref)
|
||||
LOG("%S = %+N\n", dr->symbol, dr->section);
|
||||
LOG("%S = %+N\n", dr->doc_symbol, dr->section);
|
||||
internal_error("Bad index documentation reference");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue