mirror of
https://github.com/ganelson/inform.git
synced 2024-06-17 07:40:47 +03:00
Made pipelines able to run each other
This commit is contained in:
parent
9f99b5b99b
commit
9729d14244
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
v10.1.0-alpha.1+6T79 'Krypton' (19 November 2021)
|
||||
v10.1.0-alpha.1+6T80 'Krypton' (22 November 2021)
|
||||
|
||||
## About Inform 7
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 19 November 2021
|
||||
Build Number: 6T79
|
||||
Build Date: 22 November 2021
|
||||
Build Number: 6T80
|
||||
|
|
|
@ -144,7 +144,7 @@ also done with a pipeline.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">filename</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP10" class="function-link"><span class="function-syntax">ParsingPipelines::basic_dictionary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"output.i6"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP11" class="function-link"><span class="function-syntax">ParsingPipelines::basic_dictionary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"output.i6"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"inform7/Internal"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2">§2</a>.</li></ul>
|
||||
|
@ -185,7 +185,7 @@ form, which would be written to <span class="extract"><span class="extract-synta
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax">) </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax">, </span><span class="reserved-syntax">pathname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SS</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SS</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::from_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SS</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::from_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SS</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">requirements_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">attachment_instruction</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -174,7 +174,7 @@ is where:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="function-syntax">PipelineModule::get_architecture</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PipelineModule::get_architecture</span></span>:<br/>New Stage - <a href="3-ns.html#SP1">§1</a><br/>Attach Stage - <a href="3-as.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="function-syntax">PipelineModule::get_architecture</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PipelineModule::get_architecture</span></span>:<br/>New Stage - <a href="3-ns.html#SP1">§1</a><br/>Load Binary Kits Stage - <a href="3-lbks.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">architecture_set_at_command_line</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Syntax errors. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PipelineErrors::syntax</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PipelineErrors::syntax</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP7_1">§7.1</a>, <a href="2-pp.html#SP7_7">§7.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">syntax</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PipelineErrors::syntax</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PipelineErrors::syntax</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP8_1">§8.1</a>, <a href="2-pp.html#SP8_7">§8.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">syntax</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">erm</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pe.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Begin syntax problem message using the module of the same name</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -92,7 +92,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PipelineErrors::syntax_with</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PipelineErrors::syntax_with</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP7_2">§7.2</a>, <a href="2-pp.html#SP7_7">§7.7</a>, <a href="2-pp.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">syntax</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PipelineErrors::syntax_with</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PipelineErrors::syntax_with</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP7">§7</a>, <a href="2-pp.html#SP8_2">§8.2</a>, <a href="2-pp.html#SP8_7">§8.7</a>, <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">syntax</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">erm</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">quoted</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">full</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">full</span><span class="plain-syntax">, </span><span class="identifier-syntax">erm</span><span class="plain-syntax">, </span><span class="identifier-syntax">quoted</span><span class="plain-syntax">);</span>
|
||||
|
@ -194,7 +194,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">some_step</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">steps</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP11" class="function-link"><span class="function-syntax">ParsingPipelines::write_step</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">some_step</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP12" class="function-link"><span class="function-syntax">ParsingPipelines::write_step</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">some_step</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="string-syntax">"****"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_number</span><span class="plain-syntax">(1, &</span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">some_step</span><span class="plain-syntax"> == </span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -73,7 +73,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">pipeline</a></li><li><a href="index.html#2">Chapter 2: Pipelines</a></li><li><b>Parsing Pipelines</b></li></ul></div>
|
||||
<p class="purpose">To parse pipelines from text files.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-pp.html#SP1">§1. How pipelines are stored</a></li><li><a href="2-pp.html#SP5">§5. Parsing</a></li><li><a href="2-pp.html#SP9">§9. Stages</a></li><li><a href="2-pp.html#SP10">§10. Starting a variables dictionary</a></li><li><a href="2-pp.html#SP11">§11. Back to text</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-pp.html#SP1">§1. How pipelines are stored</a></li><li><a href="2-pp.html#SP5">§5. Parsing</a></li><li><a href="2-pp.html#SP10">§10. Stages</a></li><li><a href="2-pp.html#SP11">§11. Starting a variables dictionary</a></li><li><a href="2-pp.html#SP12">§12. Back to text</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. How pipelines are stored. </b>An <a href="2-pp.html#SP1" class="internal">inter_pipeline</a> is a linked list of //pipeline_step//s, together with
|
||||
some associated storage used when it runs: this is for storing variables and
|
||||
|
@ -86,19 +86,23 @@ pointers to trees being worked on.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">variables</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">erroneous</span><span class="plain-syntax">; </span><span class="comment-syntax"> a syntax error occurred when parsing this</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_ephemera</span><span class="plain-syntax"> </span><span class="identifier-syntax">ephemera</span><span class="plain-syntax">; </span><span class="comment-syntax"> temporary storage when running</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> used when parsing only</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::new_pipeline</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::new_pipeline</span></span>:<br/><a href="2-pp.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::new_pipeline</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::new_pipeline</span></span>:<br/><a href="2-pp.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">variables</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">steps</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">erroneous</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">search_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">local</span><span class="plain-syntax"> = </span><span class="identifier-syntax">local</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-rp.html#SP1" class="function-link"><span class="function-syntax">RunningPipelines::clean_pipeline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inter_pipeline is accessed in 2/rp, 2/pe, 2/rmws, 3/ns, 3/as, 3/ps, 3/plm, 3/rcc, 3/ass, 3/res, 3/ip, 3/dic, 3/unq, 3/rv, 4/su, 5/erm, 5/erl, 5/ero and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inter_pipeline is accessed in 2/rp, 2/pe, 2/rmws, 3/ns, 3/lbks, 3/ps, 3/plm, 3/rcc, 3/ass, 3/res, 3/ip, 3/dic, 3/unq, 3/rv, 4/su, 5/erm, 5/erl, 5/ero and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>A <a href="2-pp.html#SP2" class="internal">pipeline_step</a> is really only a choice of <a href="2-pp.html#SP3" class="internal">pipeline_stage</a>, but comes
|
||||
along with a wide variety of options and parameter settings, so that it looks
|
||||
much more complicated than it actually is.
|
||||
|
@ -117,7 +121,7 @@ much more complicated than it actually is.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::new_step</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::new_step</span></span>:<br/><a href="2-pp.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::new_step</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::new_step</span></span>:<br/><a href="2-pp.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">pipeline</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">step_stage</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -130,7 +134,7 @@ much more complicated than it actually is.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure pipeline_step is accessed in 2/rp, 2/pe, 2/rmws, 3/ns, 3/as, 3/ps, 3/plm, 3/rcc, 3/ass, 3/res, 3/ip, 3/dic, 3/unq, 3/rv, 4/su, 5/erm, 5/erl, 5/ero and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure pipeline_step is accessed in 2/rp, 2/pe, 2/rmws, 3/ns, 3/lbks, 3/ps, 3/plm, 3/rcc, 3/ass, 3/res, 3/ip, 3/dic, 3/unq, 3/rv, 4/su, 5/erm, 5/erl, 5/ero and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>And a <a href="2-pp.html#SP3" class="internal">pipeline_stage</a> is simply a choice of what to do. For example,
|
||||
<span class="extract"><span class="extract-syntax">eliminate-redundant-labels</span></span> is a pipeline stage. This would need to be
|
||||
combined with details of what tree to apply to in order to become a step.
|
||||
|
@ -154,7 +158,7 @@ combined with details of what tree to apply to in order to become a step.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">pipeline_stage</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">pipeline_stage</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::new_stage</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::new_stage</span></span>:<br/>Read, Move, Wipe, Stop - <a href="2-rmws.html#SP1">§1</a><br/>New Stage - <a href="3-ns.html#SP1">§1</a><br/>Attach Stage - <a href="3-as.html#SP1">§1</a><br/>Parsing Stages - <a href="3-ps.html#SP1">§1</a><br/>Parse Linked Matter - <a href="3-plm.html#SP1">§1</a><br/>Resolving Conditional Compilation - <a href="3-rcc.html#SP1">§1</a><br/>Assimilate Linked Matter - <a href="3-ass.html#SP1">§1</a><br/>Resolve External Symbols - <a href="3-res.html#SP1">§1</a><br/>Inspect Plugs - <a href="3-ip.html#SP1">§1</a><br/>Detect Indirect Calls - <a href="3-dic.html#SP1">§1</a><br/>Uniqueness - <a href="3-unq.html#SP1">§1</a><br/>Reconcile Verbs - <a href="3-rv.html#SP1">§1</a><br/>Synoptic Utilities - <a href="4-su.html#SP1">§1</a><br/>Eliminate Redundant Matter - <a href="5-erm.html#SP1">§1</a><br/>Eliminate Redundant Labels - <a href="5-erl.html#SP1">§1</a><br/>Eliminate Redundant Operations - <a href="5-ero.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">pipeline_stage</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::new_stage</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::new_stage</span></span>:<br/>Read, Move, Wipe, Stop - <a href="2-rmws.html#SP1">§1</a><br/>New Stage - <a href="3-ns.html#SP1">§1</a><br/>Load Binary Kits Stage - <a href="3-lbks.html#SP1">§1</a><br/>Parsing Stages - <a href="3-ps.html#SP1">§1</a><br/>Parse Linked Matter - <a href="3-plm.html#SP1">§1</a><br/>Resolving Conditional Compilation - <a href="3-rcc.html#SP1">§1</a><br/>Assimilate Linked Matter - <a href="3-ass.html#SP1">§1</a><br/>Resolve External Symbols - <a href="3-res.html#SP1">§1</a><br/>Inspect Plugs - <a href="3-ip.html#SP1">§1</a><br/>Detect Indirect Calls - <a href="3-dic.html#SP1">§1</a><br/>Uniqueness - <a href="3-unq.html#SP1">§1</a><br/>Reconcile Verbs - <a href="3-rv.html#SP1">§1</a><br/>Synoptic Utilities - <a href="4-su.html#SP1">§1</a><br/>Eliminate Redundant Matter - <a href="5-erm.html#SP1">§1</a><br/>Eliminate Redundant Labels - <a href="5-erl.html#SP1">§1</a><br/>Eliminate Redundant Operations - <a href="5-ero.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">X</span><span class="plain-syntax">)(</span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *), </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tr</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_stage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stage</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_stage</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">-></span><span class="identifier-syntax">stage_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
|
@ -188,33 +192,34 @@ a program for a very simple programming language — into an <a href="2-pp.h
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::from_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP1" class="function-link"><span class="function-syntax">ParsingPipelines::new_pipeline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::from_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP1" class="function-link"><span class="function-syntax">ParsingPipelines::new_pipeline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">Filenames::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TextFiles::read</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"can't open inter pipeline file"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><a href="2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::scan_line</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="identifier-syntax">erroneous</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPipelines::scan_line</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPipelines::scan_line</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::scan_line</span></span>:<br/><a href="2-pp.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">X</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP6" class="function-link"><span class="function-syntax">ParsingPipelines::parse_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instructions</span><span class="plain-syntax">, </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP1" class="function-link"><span class="function-syntax">ParsingPipelines::new_pipeline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP1" class="function-link"><span class="function-syntax">ParsingPipelines::new_pipeline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP6" class="function-link"><span class="function-syntax">ParsingPipelines::parse_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">instructions</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="identifier-syntax">erroneous</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>Either way, then, a sequence of 1 or more textual lines of description is
|
||||
passed to the following. It breaks down the line into 1 or more steps, divided
|
||||
by commas.
|
||||
passed to the following. It breaks down the line into 1 or more instructions,
|
||||
divided by commas.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPipelines::parse_line</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::parse_line</span></span>:<br/><a href="2-pp.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instructions</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPipelines::parse_line</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::parse_line</span></span>:<br/><a href="2-pp.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instructions</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">instructions</span><span class="plain-syntax">)</span>
|
||||
|
@ -224,21 +229,47 @@ by commas.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Regexp::create_mr</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">" *(%c+?) *,+ *(%c*?) *"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ST</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP7" class="function-link"><span class="function-syntax">ParsingPipelines::parse_step</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ST</span><span class="plain-syntax">) </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">ST</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">steps</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">erroneous</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP7" class="function-link"><span class="function-syntax">ParsingPipelines::parse_instruction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">" *(%c+?) *"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ST</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP7" class="function-link"><span class="function-syntax">ParsingPipelines::parse_step</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ST</span><span class="plain-syntax">) </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">ST</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">steps</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">erroneous</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">" *(%c+?) *"</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP7" class="function-link"><span class="function-syntax">ParsingPipelines::parse_instruction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Finally, an individual textual description <span class="extract"><span class="extract-syntax">S</span></span> of a dtep is turned into a
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Instructions are mostly steps, but...
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPipelines::parse_instruction</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::parse_instruction</span></span>:<br/><a href="2-pp.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Regexp::create_mr</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"!%c*"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> ;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"run pipeline (%c*)"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">SUPERVISOR_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSkill::filename_of_pipeline</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">search_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">SUPERVISOR_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">local</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pe.html#SP1" class="function-link"><span class="function-syntax">PipelineErrors::syntax_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"unable to find the pipeline '%S'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">erroneous</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TextFiles::read</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"can't open inter pipeline file"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><a href="2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::scan_line</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ST</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP8" class="function-link"><span class="function-syntax">ParsingPipelines::parse_step</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ST</span><span class="plain-syntax">) </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">ST</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">steps</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">erroneous</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>Finally, an individual textual description <span class="extract"><span class="extract-syntax">S</span></span> of a step is turned into a
|
||||
<a href="2-pp.html#SP2" class="internal">pipeline_step</a>.
|
||||
</p>
|
||||
|
||||
|
@ -246,7 +277,7 @@ by commas.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::parse_step</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::parse_step</span></span>:<br/><a href="2-pp.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::parse_step</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::parse_step</span></span>:<br/><a href="2-pp.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-></span><span class="element-syntax">variables</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP2" class="function-link"><span class="function-syntax">ParsingPipelines::new_step</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">);</span>
|
||||
|
@ -257,27 +288,27 @@ by commas.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"optionally-%c+"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">left_arrow_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+?) *<- *(%c*)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Left arrow notation</span><span class="named-paragraph-number">7.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+?) (%C+) *-> *(%c*)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Right arrow notation with generator</span><span class="named-paragraph-number">7.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+?) *-> *(%c*)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP7_3" class="named-paragraph-link"><span class="named-paragraph">Right arrow notation without generator</span><span class="named-paragraph-number">7.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+?) *<- *(%c*)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Left arrow notation</span><span class="named-paragraph-number">8.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+?) (%C+) *-> *(%c*)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Right arrow notation with generator</span><span class="named-paragraph-number">8.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+?) *-> *(%c*)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Right arrow notation without generator</span><span class="named-paragraph-number">8.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%C+?) (%d)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP7_4" class="named-paragraph-link"><span class="named-paragraph">Repository number as argument</span><span class="named-paragraph-number">7.4</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%C+?) (%d):(%c*)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP7_5" class="named-paragraph-link"><span class="named-paragraph">Repository number and package as arguments</span><span class="named-paragraph-number">7.5</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%C+?) (%c+)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP7_6" class="named-paragraph-link"><span class="named-paragraph">Package as argument</span><span class="named-paragraph-number">7.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%C+?) (%d)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP8_4" class="named-paragraph-link"><span class="named-paragraph">Repository number as argument</span><span class="named-paragraph-number">8.4</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%C+?) (%d):(%c*)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP8_5" class="named-paragraph-link"><span class="named-paragraph">Repository number and package as arguments</span><span class="named-paragraph-number">8.5</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%C+?) (%c+)"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP8_6" class="named-paragraph-link"><span class="named-paragraph">Package as argument</span><span class="named-paragraph-number">8.6</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">step_stage</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP9" class="function-link"><span class="function-syntax">ParsingPipelines::parse_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP7_7" class="named-paragraph-link"><span class="named-paragraph">Make consistency checks</span><span class="named-paragraph-number">7.7</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">step_stage</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP10" class="function-link"><span class="function-syntax">ParsingPipelines::parse_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pp.html#SP8_7" class="named-paragraph-link"><span class="named-paragraph">Make consistency checks</span><span class="named-paragraph-number">8.7</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7_1" class="paragraph-anchor"></a><b>§7.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Left arrow notation</span><span class="named-paragraph-number">7.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP8_1" class="paragraph-anchor"></a><b>§8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Left arrow notation</span><span class="named-paragraph-number">8.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1]) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">step_argument</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP8" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">step_argument</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP9" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">step_argument</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pe.html#SP1" class="function-link"><span class="function-syntax">PipelineErrors::syntax</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="string-syntax">"no source to right of arrow"</span><span class="plain-syntax">);</span>
|
||||
|
@ -286,8 +317,8 @@ by commas.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">left_arrow_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_2" class="paragraph-anchor"></a><b>§7.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Right arrow notation with generator</span><span class="named-paragraph-number">7.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_2" class="paragraph-anchor"></a><b>§8.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Right arrow notation with generator</span><span class="named-paragraph-number">8.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -299,54 +330,54 @@ by commas.
|
|||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">generator_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cgt</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">step_argument</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP8" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">step_argument</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP9" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">step_argument</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_3" class="paragraph-anchor"></a><b>§7.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Right arrow notation without generator</span><span class="named-paragraph-number">7.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_3" class="paragraph-anchor"></a><b>§8.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Right arrow notation without generator</span><span class="named-paragraph-number">8.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">generator_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">take_generator_argument_from_VM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">step_argument</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP8" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">step_argument</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP9" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">step_argument</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_4" class="paragraph-anchor"></a><b>§7.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Repository number as argument</span><span class="named-paragraph-number">7.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_4" class="paragraph-anchor"></a><b>§8.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Repository number as argument</span><span class="named-paragraph-number">8.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">repository_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::atoi</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_5" class="paragraph-anchor"></a><b>§7.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Repository number and package as arguments</span><span class="named-paragraph-number">7.5</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_5" class="paragraph-anchor"></a><b>§8.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Repository number and package as arguments</span><span class="named-paragraph-number">8.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">repository_argument</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::atoi</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[2]) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">package_URL_argument</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP8" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP9" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[2], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">package_URL_argument</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_6" class="paragraph-anchor"></a><b>§7.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Package as argument</span><span class="named-paragraph-number">7.6</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_6" class="paragraph-anchor"></a><b>§8.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Package as argument</span><span class="named-paragraph-number">8.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="identifier-syntax">package_URL_argument</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP8" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP9" class="function-link"><span class="function-syntax">ParsingPipelines::text_arg</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">package_URL_argument</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_7" class="paragraph-anchor"></a><b>§7.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make consistency checks</span><span class="named-paragraph-number">7.7</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8_7" class="paragraph-anchor"></a><b>§8.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make consistency checks</span><span class="named-paragraph-number">8.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -368,14 +399,14 @@ by commas.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>A textual argument beginning with an asterisk means "expand to the value of
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pp.html#SP8">§8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>A textual argument beginning with an asterisk means "expand to the value of
|
||||
this variable", which is required to exist unless <span class="extract"><span class="extract-syntax">allow_unknown</span></span> is set.
|
||||
If it is, then an empty text results as the argument.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::text_arg</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::text_arg</span></span>:<br/><a href="2-pp.html#SP7_1">§7.1</a>, <a href="2-pp.html#SP7_2">§7.2</a>, <a href="2-pp.html#SP7_3">§7.3</a>, <a href="2-pp.html#SP7_5">§7.5</a>, <a href="2-pp.html#SP7_6">§7.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">,</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::text_arg</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::text_arg</span></span>:<br/><a href="2-pp.html#SP8_1">§8.1</a>, <a href="2-pp.html#SP8_2">§8.2</a>, <a href="2-pp.html#SP8_3">§8.3</a>, <a href="2-pp.html#SP8_5">§8.5</a>, <a href="2-pp.html#SP8_6">§8.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">syntax</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow_unknown</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">) == </span><span class="character-syntax">'*'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">find</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
|
@ -390,19 +421,19 @@ If it is, then an empty text results as the argument.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Stages. </b>Stages are a fixed set within this compiler: there's no way for a pipeline
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Stages. </b>Stages are a fixed set within this compiler: there's no way for a pipeline
|
||||
file to specify a new one.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">pipeline_stage</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::parse_stage</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::parse_stage</span></span>:<br/><a href="2-pp.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">pipeline_stage</span><span class="plain-syntax"> *</span><span class="function-syntax">ParsingPipelines::parse_stage</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::parse_stage</span></span>:<br/><a href="2-pp.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">static</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stages_made</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stages_made</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stages_made</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-rmws.html#SP1" class="function-link"><span class="function-syntax">SimpleStages::create_pipeline_stages</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CodeGen::create_pipeline_stage</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ns.html#SP1" class="function-link"><span class="function-syntax">NewStage::create_pipeline_stage</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-as.html#SP1" class="function-link"><span class="function-syntax">AttachStage::create_pipeline_stage</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-lbks.html#SP1" class="function-link"><span class="function-syntax">LoadBinaryKitsStage::create_pipeline_stage</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ass.html#SP1" class="function-link"><span class="function-syntax">CodeGen::Assimilate::create_pipeline_stage</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-dic.html#SP1" class="function-link"><span class="function-syntax">DetectIndirectCalls::create_pipeline_stage</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="5-erm.html#SP1" class="function-link"><span class="function-syntax">CodeGen::Eliminate::create_pipeline_stage</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -424,7 +455,7 @@ file to specify a new one.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Starting a variables dictionary. </b>Note that the above ways to create a pipeline all expect a dictionary of variable
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Starting a variables dictionary. </b>Note that the above ways to create a pipeline all expect a dictionary of variable
|
||||
names and their values to exist. These dictionaries are typically very small,
|
||||
and by convention the main variable is <span class="extract"><span class="extract-syntax">*out</span></span>, the leafname to write output to.
|
||||
So the following utility is convenient for getting started.
|
||||
|
@ -438,11 +469,11 @@ So the following utility is convenient for getting started.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Back to text. </b>Here we write a textual description to a string, which is useful for logging:
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Back to text. </b>Here we write a textual description to a string, which is useful for logging:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPipelines::write_step</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::write_step</span></span>:<br/>Running Pipelines - <a href="2-rp.html#SP3_1">§3.1</a><br/>Pipeline Errors - <a href="2-pe.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPipelines::write_step</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::write_step</span></span>:<br/>Running Pipelines - <a href="2-rp.html#SP3_1">§3.1</a><br/>Pipeline Errors - <a href="2-pe.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">step_stage</span><span class="plain-syntax">-></span><span class="element-syntax">stage_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">step_stage</span><span class="plain-syntax">-></span><span class="element-syntax">stage_arg</span><span class="plain-syntax"> != </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">repository_argument</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SimpleStages::create_pipeline_stages</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">SimpleStages::create_pipeline_stages</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SimpleStages::create_pipeline_stages</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">SimpleStages::create_pipeline_stages</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"stop"</span><span class="plain-syntax">, </span><a href="2-rmws.html#SP5" class="function-link"><span class="function-syntax">SimpleStages::run_stop_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"wipe"</span><span class="plain-syntax">, </span><a href="2-rmws.html#SP4" class="function-link"><span class="function-syntax">SimpleStages::run_wipe_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"read"</span><span class="plain-syntax">, </span><a href="2-rmws.html#SP2" class="function-link"><span class="function-syntax">SimpleStages::run_read_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">FILE_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -126,7 +126,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure pipeline_step_ephemera is accessed in 2/pp, 2/pe, 2/rmws, 3/ns, 3/as, 3/ps, 3/plm, 3/rcc, 3/ass, 3/res, 3/ip, 3/dic, 3/unq, 3/rv, 4/su, 5/erm, 5/erl, 5/ero and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure pipeline_step_ephemera is accessed in 2/pp, 2/pe, 2/rmws, 3/ns, 3/lbks, 3/ps, 3/plm, 3/rcc, 3/ass, 3/res, 3/ip, 3/dic, 3/unq, 3/rv, 4/su, 5/erm, 5/erl, 5/ero and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>This outer layer is all just instrumentation, really: we run through the
|
||||
steps in turn, timing how long each one took us.
|
||||
</p>
|
||||
|
@ -167,7 +167,7 @@ steps in turn, timing how long each one took us.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Time::stop_stopwatch</span><span class="plain-syntax">(</span><span class="identifier-syntax">prep_timer</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">STAGE_NAME</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">STAGE_NAME</span><span class="plain-syntax">, </span><span class="string-syntax">"inter step %d/%d: "</span><span class="plain-syntax">, ++</span><span class="identifier-syntax">step_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">step_total</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP11" class="function-link"><span class="function-syntax">ParsingPipelines::write_step</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">STAGE_NAME</span><span class="plain-syntax">, </span><span class="identifier-syntax">step</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP12" class="function-link"><span class="function-syntax">ParsingPipelines::write_step</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">STAGE_NAME</span><span class="plain-syntax">, </span><span class="identifier-syntax">step</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Log::new_stage</span><span class="plain-syntax">(</span><span class="identifier-syntax">STAGE_NAME</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stopwatch_timer</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step_timer</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Time::start_stopwatch</span><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_timer</span><span class="plain-syntax">, </span><span class="identifier-syntax">STAGE_NAME</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Pipeline stage. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Assimilate::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Assimilate::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Assimilate::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Assimilate::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"assimilate"</span><span class="plain-syntax">, </span><a href="3-ass.html#SP1" class="function-link"><span class="function-syntax">CodeGen::Assimilate::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -944,7 +944,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure routine_body_request is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-rcc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresscurrent">ass</li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-res.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-rcc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresscurrent">ass</li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-res.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Pipeline stage. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">DetectIndirectCalls::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">DetectIndirectCalls::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">DetectIndirectCalls::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">DetectIndirectCalls::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"detect-indirect-calls"</span><span class="plain-syntax">, </span><a href="3-dic.html#SP1" class="function-link"><span class="function-syntax">DetectIndirectCalls::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -129,7 +129,7 @@ operations:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ip.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresscurrent">dic</li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-unq.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ip.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresscurrent">dic</li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-unq.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Pipeline stage. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Inspection::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Inspection::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Inspection::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Inspection::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"inspect-plugs"</span><span class="plain-syntax">, </span><a href="3-ip.html#SP1" class="function-link"><span class="function-syntax">CodeGen::Inspection::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -109,7 +109,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-res.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresscurrent">ip</li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-dic.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-res.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresscurrent">ip</li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-dic.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Attach Stage</title>
|
||||
<title>Load Binary Kits Stage</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
|
@ -68,9 +68,9 @@ function togglePopup(material_id) {
|
|||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Attach Stage' generated by Inweb-->
|
||||
<!--Weave of 'Load Binary Kits Stage' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">pipeline</a></li><li><a href="index.html#3">Chapter 3: Linking Stages</a></li><li><b>Attach Stage</b></li></ul></div>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">pipeline</a></li><li><a href="index.html#3">Chapter 3: Linking Stages</a></li><li><b>Load Binary Kits Stage</b></li></ul></div>
|
||||
<p class="purpose">Reading other Inter trees as binary files, and attaching them at given points in the main Inter tree.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Linking is not a symmetrical process: one Inter tree remains the primary one —
|
||||
|
@ -82,16 +82,17 @@ a binary Inter file, and then attached to (i.e., made part of) the primary tree.
|
|||
</p>
|
||||
|
||||
<p class="commentary">The primary tree cannot "know", of itself, where these secondary trees will
|
||||
live in the file system, so the <span class="extract"><span class="extract-syntax">attach</span></span> stage needs to be given instructions
|
||||
live in the file system, so the <span class="extract"><span class="extract-syntax">load-binary-kits</span></span> stage needs to be given instructions
|
||||
on the side. This is done with the "requirements list" of the step.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">AttachStage::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">AttachStage::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"attach"</span><span class="plain-syntax">, </span><a href="3-as.html#SP1" class="function-link"><span class="function-syntax">AttachStage::run</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LoadBinaryKitsStage::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">LoadBinaryKitsStage::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"load-binary-kits"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="3-lbks.html#SP1" class="function-link"><span class="function-syntax">LoadBinaryKitsStage::run</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">AttachStage::run</span><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LoadBinaryKitsStage::run</span><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">attachment_instruction</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="reserved-syntax">attachment_instruction</span><span class="plain-syntax">, </span><span class="identifier-syntax">step</span><span class="plain-syntax">-></span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="element-syntax">requirements_list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><a href="1-pm.html#SP4" class="function-link"><span class="function-syntax">PipelineModule::get_architecture</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -127,7 +128,7 @@ a linked list of //attachment_instruction//s.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">attachment_instruction</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">attachment_instruction</span><span class="plain-syntax"> *</span><span class="function-syntax">AttachStage::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">attach</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">attachment_instruction</span><span class="plain-syntax"> *</span><span class="function-syntax">LoadBinaryKitsStage::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">attach</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">attachment_instruction</span><span class="plain-syntax"> *</span><span class="identifier-syntax">link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">attachment_instruction</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">link</span><span class="plain-syntax">-></span><span class="identifier-syntax">location</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">link</span><span class="plain-syntax">-></span><span class="identifier-syntax">attachment_point</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">attach</span><span class="plain-syntax">);</span>
|
||||
|
@ -136,7 +137,7 @@ a linked list of //attachment_instruction//s.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure attachment_instruction is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ns.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresscurrent">as</li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-ps.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ns.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresscurrent">lbks</li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-ps.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
|
@ -76,7 +76,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">NewStage::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">NewStage::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">NewStage::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">NewStage::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"new"</span><span class="plain-syntax">, </span><a href="3-ns.html#SP1" class="function-link"><span class="function-syntax">NewStage::run</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -299,7 +299,7 @@ be able to resolve conditional compilation matter placed inside, e.g.,
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ns.html#SP1">§1</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-rmws.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">ns</li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-as.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-rmws.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">ns</li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-lbks.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Pipeline stage. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::PLM::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::PLM::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::PLM::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::PLM::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"parse-linked-matter"</span><span class="plain-syntax">, </span><a href="3-plm.html#SP1" class="function-link"><span class="function-syntax">CodeGen::PLM::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -128,7 +128,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresscurrent">plm</li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-rcc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresscurrent">plm</li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-rcc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Link. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingStages::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ParsingStages::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingStages::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ParsingStages::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"parse-kit"</span><span class="plain-syntax">, </span><a href="3-ps.html#SP1" class="function-link"><span class="function-syntax">ParsingStages::run_parse_kit</span></a><span class="plain-syntax">, </span><span class="constant-syntax">TEMPLATE_FILE_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"parse-insertions"</span><span class="plain-syntax">, </span><a href="3-ps.html#SP1" class="function-link"><span class="function-syntax">ParsingStages::run_parse_insertions</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -269,7 +269,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-as.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresscurrent">ps</li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-tr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-lbks.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresscurrent">ps</li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-tr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Pipeline stage. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::RCC::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::RCC::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::RCC::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::RCC::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"resolve-conditional-compilation"</span><span class="plain-syntax">, </span><a href="3-rcc.html#SP1" class="function-link"><span class="function-syntax">CodeGen::RCC::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -293,7 +293,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-rcc.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-plm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresscurrent">rcc</li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-ass.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-plm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresscurrent">rcc</li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-ass.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Pipeline stage. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Externals::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Externals::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Externals::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Externals::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"resolve-external-symbols"</span><span class="plain-syntax">, </span><a href="3-res.html#SP1" class="function-link"><span class="function-syntax">CodeGen::Externals::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -132,7 +132,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ass.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresscurrent">res</li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-ip.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ass.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresscurrent">res</li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-ip.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Pipeline stage. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::ReconcileVerbs::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::ReconcileVerbs::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::ReconcileVerbs::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::ReconcileVerbs::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"reconcile-verbs"</span><span class="plain-syntax">, </span><a href="3-rv.html#SP1" class="function-link"><span class="function-syntax">CodeGen::ReconcileVerbs::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -138,7 +138,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-rv.html#SP2">§2</a> (twice).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-unq.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresscurrent">rv</li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="4-sh.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-unq.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresscurrent">rv</li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="4-sh.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -696,7 +696,7 @@ safely between <span class="extract"><span class="extract-syntax">{-open-index}<
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ps.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresscurrent">tr</li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-plm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ps.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresscurrent">tr</li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresssection"><a href="3-unq.html">unq</a></li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-plm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -78,7 +78,7 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Pipeline stage. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Uniqueness::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Uniqueness::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Uniqueness::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Uniqueness::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"make-identifiers-unique"</span><span class="plain-syntax">, </span><a href="3-unq.html#SP1" class="function-link"><span class="function-syntax">CodeGen::Uniqueness::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -124,7 +124,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure uniqueness_count is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-dic.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-as.html">as</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresscurrent">unq</li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-rv.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-dic.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-pm.html">1</a></li><li class="progresschapter"><a href="2-pp.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-ns.html">ns</a></li><li class="progresssection"><a href="3-lbks.html">lbks</a></li><li class="progresssection"><a href="3-ps.html">ps</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-plm.html">plm</a></li><li class="progresssection"><a href="3-rcc.html">rcc</a></li><li class="progresssection"><a href="3-ass.html">ass</a></li><li class="progresssection"><a href="3-res.html">res</a></li><li class="progresssection"><a href="3-ip.html">ip</a></li><li class="progresssection"><a href="3-dic.html">dic</a></li><li class="progresscurrent">unq</li><li class="progresssection"><a href="3-rv.html">rv</a></li><li class="progresschapter"><a href="4-sh.html">4</a></li><li class="progresschapter"><a href="5-erm.html">5</a></li><li class="progressnext"><a href="3-rv.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -79,7 +79,7 @@ function togglePopup(material_id) {
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Synoptic::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Synoptic::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"consolidate-text"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-su.html#SP1" class="function-link"><span class="function-syntax">Synoptic::go</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -86,7 +86,7 @@ on the Inter functions in a repository.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Labels::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Labels::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Labels::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Labels::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"eliminate-redundant-labels"</span><span class="plain-syntax">, </span><a href="5-erl.html#SP1" class="function-link"><span class="function-syntax">CodeGen::Labels::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ isn't used.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Eliminate::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Eliminate::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Eliminate::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Eliminate::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"eliminate-redundant-code"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-erm.html#SP1" class="function-link"><span class="function-syntax">CodeGen::Eliminate::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -102,7 +102,7 @@ any intended side-effects of evaluating <span class="extract"><span class="extra
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Operations::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Operations::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::Operations::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">CodeGen::Operations::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"eliminate-redundant-operations"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ero.html#SP1" class="function-link"><span class="function-syntax">CodeGen::Operations::run_pipeline_stage</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -121,8 +121,8 @@
|
|||
<span class="sectionpurpose">This stage takes an empty (or wiped) repository and equips it with just the absolute basics, so that it is ready to have substantive material added at a later stage.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="3-as.html">
|
||||
<spon class="sectiontitle">Attach Stage</span></a> -
|
||||
<p class="sectionentry"><a href="3-lbks.html">
|
||||
<spon class="sectiontitle">Load Binary Kits Stage</span></a> -
|
||||
<span class="sectionpurpose">Reading other Inter trees as binary files, and attaching them at given points in the main Inter tree.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
@ -130,16 +130,11 @@ or should be, so the effect is the same.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit_path</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">associated_copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_path</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ParsingPipelines::basic_dictionary</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::any_version_of</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-wrk.html#SP2" class="function-link"><span class="function-syntax">Works::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"assimilate.interpipeline"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::search_for_best</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><a href="3-is.html#SP3" class="function-link"><span class="function-syntax">InterSkill::filename_of_pipeline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"assimilate"</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Errors::nowhere</span><span class="plain-syntax">(</span><span class="string-syntax">"assimilate pipeline could not be found"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_file</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">assim</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Architectures::canonical_binary</span><span class="plain-syntax">(</span><span class="identifier-syntax">kit_path</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">assim_t</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Architectures::canonical_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">kit_path</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
|
@ -153,11 +148,11 @@ or should be, so the effect is the same.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">Dictionaries::create_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"*kit"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Pathnames::directory_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">kit_path</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">associated_copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_path</span><span class="plain-syntax">, </span><span class="identifier-syntax">pathname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SS</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ParsingPipelines::from_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ParsingPipelines::from_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SS</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">associated_copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_path</span><span class="plain-syntax">, </span><span class="identifier-syntax">pathname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">requirements_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">attachment_instruction</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RunningPipelines::run</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">SS</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax">, </span><span class="identifier-syntax">requirements_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">for_vm</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -168,6 +163,15 @@ or should be, so the effect is the same.
|
|||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">InterSkill::filename_of_pipeline</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::any_version_of</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-wrk.html#SP2" class="function-link"><span class="function-syntax">Works::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::search_for_best</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_file</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Code generation. </b>This can only be done internally, for reasons given above, and only when the
|
||||
<a href="../pipeline-module/index.html" class="internal">pipeline</a> module is present in the current executable (which in practice means:
|
||||
|
@ -206,7 +210,7 @@ it defaults to <span class="extract"><span class="extract-syntax">compile</span>
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_file</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ParsingPipelines::from_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ParsingPipelines::from_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Errors::nowhere</span><span class="plain-syntax">(</span><span class="string-syntax">"inter pipeline file could not be parsed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -627,7 +627,7 @@ details instead.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">kit_dependency</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">kd</span><span class="plain-syntax">, </span><span class="reserved-syntax">kit_dependency</span><span class="plain-syntax">, </span><span class="identifier-syntax">project</span><span class="plain-syntax">-></span><span class="element-syntax">kits_to_include</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kd</span><span class="plain-syntax">-></span><span class="element-syntax">kit</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">attachment_instruction</span><span class="plain-syntax"> *</span><span class="identifier-syntax">link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AttachStage::new</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">attachment_instruction</span><span class="plain-syntax"> *</span><span class="identifier-syntax">link</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LoadBinaryKitsStage::new</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_path</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">-></span><span class="element-syntax">attachment_point</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="identifier-syntax">attachment_instruction</span><span class="plain-syntax">, </span><span class="identifier-syntax">requirements_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -56,17 +56,12 @@ int InterSkill::assimilate_internally(build_skill *skill, build_step *S,
|
|||
|
||||
pathname *kit_path = S->associated_copy->location_if_path;
|
||||
dictionary *pipeline_vars = ParsingPipelines::basic_dictionary(NULL);
|
||||
inbuild_requirement *req =
|
||||
Requirements::any_version_of(
|
||||
Works::new(pipeline_genre, I"assimilate.interpipeline", NULL));
|
||||
inbuild_search_result *R =
|
||||
Nests::search_for_best(req, search_list);
|
||||
if (R == NULL) {
|
||||
filename *pipeline_as_file = InterSkill::filename_of_pipeline(I"assimilate", search_list);
|
||||
if (pipeline_as_file == NULL) {
|
||||
Errors::nowhere("assimilate pipeline could not be found");
|
||||
return FALSE;
|
||||
}
|
||||
filename *pipeline_as_file = R->copy->location_if_file;
|
||||
|
||||
|
||||
filename *assim = Architectures::canonical_binary(kit_path, A);
|
||||
filename *assim_t = Architectures::canonical_textual(kit_path, A);
|
||||
TEMPORARY_TEXT(fullname)
|
||||
|
@ -79,11 +74,11 @@ int InterSkill::assimilate_internally(build_skill *skill, build_step *S,
|
|||
Str::copy(Dictionaries::create_text(pipeline_vars, I"*kit"),
|
||||
Pathnames::directory_name(kit_path));
|
||||
|
||||
linked_list *inter_paths = NEW_LINKED_LIST(pathname);
|
||||
ADD_TO_LINKED_LIST(S->associated_copy->location_if_path, pathname, inter_paths);
|
||||
inter_pipeline *SS =
|
||||
ParsingPipelines::from_file(pipeline_as_file, pipeline_vars);
|
||||
ParsingPipelines::from_file(pipeline_as_file, pipeline_vars, search_list);
|
||||
if (SS) {
|
||||
linked_list *inter_paths = NEW_LINKED_LIST(pathname);
|
||||
ADD_TO_LINKED_LIST(S->associated_copy->location_if_path, pathname, inter_paths);
|
||||
linked_list *requirements_list = NEW_LINKED_LIST(attachment_instruction);
|
||||
RunningPipelines::run(NULL, SS, NULL, inter_paths, requirements_list, S->for_vm);
|
||||
return TRUE;
|
||||
|
@ -95,6 +90,15 @@ int InterSkill::assimilate_internally(build_skill *skill, build_step *S,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
filename *InterSkill::filename_of_pipeline(text_stream *name, linked_list *search_list) {
|
||||
inbuild_requirement *req =
|
||||
Requirements::any_version_of(
|
||||
Works::new(pipeline_genre, name, NULL));
|
||||
inbuild_search_result *R = Nests::search_for_best(req, search_list);
|
||||
if (R == NULL) return NULL;
|
||||
return R->copy->location_if_file;
|
||||
}
|
||||
|
||||
@h Code generation.
|
||||
This can only be done internally, for reasons given above, and only when the
|
||||
//pipeline// module is present in the current executable (which in practice means:
|
||||
|
@ -131,7 +135,7 @@ int InterSkill::code_generate_internally(build_skill *skill, build_step *S,
|
|||
}
|
||||
F = R->copy->location_if_file;
|
||||
}
|
||||
inter_pipeline *pipeline = ParsingPipelines::from_file(F, pipeline_vars);
|
||||
inter_pipeline *pipeline = ParsingPipelines::from_file(F, pipeline_vars, search_list);
|
||||
if (pipeline == NULL) {
|
||||
Errors::nowhere("inter pipeline file could not be parsed");
|
||||
return FALSE;
|
||||
|
|
|
@ -496,7 +496,7 @@ linked_list *Projects::list_of_attachment_instructions(inform_project *project)
|
|||
kit_dependency *kd;
|
||||
LOOP_OVER_LINKED_LIST(kd, kit_dependency, project->kits_to_include) {
|
||||
inform_kit *K = kd->kit;
|
||||
attachment_instruction *link = AttachStage::new(
|
||||
attachment_instruction *link = LoadBinaryKitsStage::new(
|
||||
K->as_copy->location_if_path, K->attachment_point);
|
||||
ADD_TO_LINKED_LIST(link, attachment_instruction, requirements_list);
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
Total memory consumption was 399444K = 390 MB
|
||||
Total memory consumption was 399461K = 390 MB
|
||||
|
||||
61.0% was used for 2020300 objects, in 379646 frames in 305 x 800K = 244000K = 238 MB:
|
||||
61.0% was used for 2020860 objects, in 380008 frames in 305 x 800K = 244000K = 238 MB:
|
||||
|
||||
10.2% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
7.2% text_stream_array 5254 x 100 = 525400 objects, 29590528 bytes
|
||||
4.7% linked_list 34681 objects, 19421360 bytes
|
||||
7.2% text_stream_array 5256 x 100 = 525600 objects, 29601792 bytes
|
||||
4.7% linked_list 34789 objects, 19481840 bytes
|
||||
3.9% inter_symbol_array 140 x 1024 = 143360 objects, 16060800 bytes
|
||||
2.5% parse_node 129462 objects, 10356960 bytes
|
||||
1.8% verb_conjugation 160 objects, 7425280 bytes
|
||||
|
@ -32,9 +32,9 @@ Total memory consumption was 399444K = 390 MB
|
|||
0.2% individual_form 2561 objects, 860496 bytes
|
||||
0.2% inter_schema_node 8891 objects, 853536 bytes
|
||||
0.1% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.1% scan_directory 112 objects, 462336 bytes
|
||||
0.1% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
|
||||
---- verb_usage 1128 objects, 388032 bytes
|
||||
---- scan_directory 94 objects, 388032 bytes
|
||||
---- rule 469 objects, 367696 bytes
|
||||
---- verb_form 386 objects, 345856 bytes
|
||||
---- noun 2380 objects, 285600 bytes
|
||||
|
@ -105,62 +105,63 @@ Total memory consumption was 399444K = 390 MB
|
|||
---- parse_node_tree 20 objects, 17280 bytes
|
||||
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
|
||||
---- to_phrase_request 59 objects, 16048 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- adjective 137 objects, 15344 bytes
|
||||
---- generated_segment 14 objects, 14784 bytes
|
||||
---- pathname 332 objects, 13280 bytes
|
||||
---- booking_list 407 objects, 13024 bytes
|
||||
---- adjective_iname_holder 320 objects, 12800 bytes
|
||||
---- pathname 296 objects, 11840 bytes
|
||||
---- uniqueness_count 451 objects, 10824 bytes
|
||||
---- filename 246 objects, 9840 bytes
|
||||
---- stopwatch_timer 113 objects, 9040 bytes
|
||||
---- filename 207 objects, 8280 bytes
|
||||
---- equation_node 68 objects, 7616 bytes
|
||||
---- hierarchy_attachment_point 77 objects, 7392 bytes
|
||||
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
|
||||
---- shared_variable_array 1 x 100 objects, 7232 bytes
|
||||
---- determiner 22 objects, 7216 bytes
|
||||
---- build_vertex 60 objects, 7200 bytes
|
||||
---- inbuild_work 101 objects, 6464 bytes
|
||||
---- text_literal_holder 161 objects, 6440 bytes
|
||||
---- verb 108 objects, 6048 bytes
|
||||
---- inbuild_copy 55 objects, 5720 bytes
|
||||
---- heading_tree 20 objects, 5440 bytes
|
||||
---- inbuild_work 77 objects, 4928 bytes
|
||||
---- inbuild_edition 74 objects, 5328 bytes
|
||||
---- explicit_action_array 1 x 100 objects, 4832 bytes
|
||||
---- value_property_data 84 objects, 4704 bytes
|
||||
---- build_vertex 39 objects, 4680 bytes
|
||||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- compatibility_specification 86 objects, 4128 bytes
|
||||
---- command_line_switch 49 objects, 3920 bytes
|
||||
---- activity 35 objects, 3920 bytes
|
||||
---- inbuild_edition 53 objects, 3816 bytes
|
||||
---- submodule_request 94 objects, 3760 bytes
|
||||
---- parse_node_annotation_type 114 objects, 3648 bytes
|
||||
---- inbuild_copy 34 objects, 3536 bytes
|
||||
---- property_setting_bp_data 84 objects, 3360 bytes
|
||||
---- method_set 103 objects, 3296 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- inform_extension 19 objects, 3192 bytes
|
||||
---- definition 44 objects, 3168 bytes
|
||||
---- compatibility_specification 65 objects, 3120 bytes
|
||||
---- either_or_property_data 62 objects, 2976 bytes
|
||||
---- semver_range 25 objects, 2600 bytes
|
||||
---- use_option 29 objects, 2552 bytes
|
||||
---- parentage_inference_data 79 objects, 2528 bytes
|
||||
---- part_of_inference_data 79 objects, 2528 bytes
|
||||
---- parentage_inference_data 79 objects, 2528 bytes
|
||||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- inter_construct 30 objects, 2400 bytes
|
||||
---- equation_symbol 30 objects, 2400 bytes
|
||||
---- semver_range 22 objects, 2288 bytes
|
||||
---- inter_construct 30 objects, 2400 bytes
|
||||
---- scene 1 object, 2096 bytes
|
||||
---- build_script 60 objects, 1920 bytes
|
||||
---- pronoun_usage 42 objects, 1680 bytes
|
||||
---- table_contribution_array 1 x 100 objects, 1632 bytes
|
||||
---- plugin 25 objects, 1600 bytes
|
||||
---- inform_pipeline 24 objects, 1536 bytes
|
||||
---- cached_kind_declaration 38 objects, 1520 bytes
|
||||
---- noun_filter_token 22 objects, 1408 bytes
|
||||
---- inter_tree_location_list 34 objects, 1360 bytes
|
||||
---- special_meaning_holder 33 objects, 1320 bytes
|
||||
---- inter_annotation_form 33 objects, 1320 bytes
|
||||
---- special_meaning_holder 33 objects, 1320 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- table_column 16 objects, 1280 bytes
|
||||
---- build_script 39 objects, 1248 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- direction_inference_data 30 objects, 1200 bytes
|
||||
---- target_vm 8 objects, 1152 bytes
|
||||
|
@ -168,19 +169,19 @@ Total memory consumption was 399444K = 390 MB
|
|||
---- pipeline_stage 22 objects, 1056 bytes
|
||||
---- runtime_kind_structure 13 objects, 1040 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- inbuild_requirement 25 objects, 1000 bytes
|
||||
---- submodule_identity 30 objects, 960 bytes
|
||||
---- inbuild_requirement 22 objects, 880 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- cached_understanding 21 objects, 840 bytes
|
||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||
---- inter_data_type 14 objects, 784 bytes
|
||||
---- internal_test 15 objects, 720 bytes
|
||||
---- inbuild_search_result 18 objects, 720 bytes
|
||||
---- inform_language 6 objects, 672 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- inbuild_search_result 15 objects, 600 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- code_generation 1 object, 576 bytes
|
||||
---- rulebook_outcome 17 objects, 544 bytes
|
||||
---- small_word_set 11 objects, 528 bytes
|
||||
|
@ -200,8 +201,8 @@ Total memory consumption was 399444K = 390 MB
|
|||
---- tree_inventory 1 object, 312 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- contents_entry 7 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- compilation_unit 5 objects, 280 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
|
@ -210,15 +211,14 @@ Total memory consumption was 399444K = 390 MB
|
|||
---- release_instructions 1 object, 208 bytes
|
||||
---- code_generator 5 objects, 200 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- inform_project 1 object, 192 bytes
|
||||
---- inform_pipeline 3 objects, 192 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- inform_project 1 object, 192 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- attachment_instruction 4 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- imperative_defn_family 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- inter_pipeline 1 object, 136 bytes
|
||||
---- inter_pipeline 1 object, 152 bytes
|
||||
---- element_activation 4 objects, 128 bytes
|
||||
---- inbuild_nest 3 objects, 120 bytes
|
||||
---- local_block_value 2 objects, 112 bytes
|
||||
|
@ -238,7 +238,7 @@ Total memory consumption was 399444K = 390 MB
|
|||
|
||||
38.9% was used for memory not allocated for objects:
|
||||
|
||||
20.3% text stream storage 83162236 bytes in 543391 claims
|
||||
20.3% text stream storage 83179496 bytes in 543561 claims
|
||||
4.4% dictionary storage 18326016 bytes in 33307 claims
|
||||
---- sorting 736 bytes in 3 claims
|
||||
1.7% source text 7200000 bytes in 3 claims
|
||||
|
@ -256,5 +256,5 @@ Total memory consumption was 399444K = 390 MB
|
|||
---- code generation workspace for objects 1336 bytes in 4 claims
|
||||
---- emitter array storage 161792 bytes in 2062 claims
|
||||
|
||||
18.7% was overhead - 76618256 bytes = 74822K = 73 MB
|
||||
18.6% was overhead - 76457864 bytes = 74665K = 72 MB
|
||||
|
||||
|
|
|
@ -1,37 +1,36 @@
|
|||
100.0% in inform7 run
|
||||
55.4% in compilation to Inter
|
||||
40.2% in //Sequence::undertake_queued_tasks//
|
||||
3.4% in //MajorNodes::pre_pass//
|
||||
2.5% in //MajorNodes::pass_1//
|
||||
2.0% in //RTPhrasebook::compile_entries//
|
||||
55.7% in compilation to Inter
|
||||
40.1% in //Sequence::undertake_queued_tasks//
|
||||
3.5% in //MajorNodes::pre_pass//
|
||||
2.6% in //MajorNodes::pass_1//
|
||||
2.1% in //RTPhrasebook::compile_entries//
|
||||
1.3% in //ImperativeDefinitions::assess_all//
|
||||
1.1% in //RTKindConstructors::compile//
|
||||
1.2% in //RTKindConstructors::compile//
|
||||
0.4% in //MajorNodes::pass_2//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //World::stage_V//
|
||||
0.2% in //ImperativeDefinitions::compile_first_block//
|
||||
0.2% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //ImperativeDefinitions::compile_first_block//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.1% in //CompletionModule::compile//
|
||||
0.1% in //InferenceSubjects::emit_all//
|
||||
0.1% in //RTKindConstructors::compile_permissions//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
2.0% not specifically accounted for
|
||||
42.7% in running Inter pipeline
|
||||
12.9% in step preparation
|
||||
9.6% in inter step 7/16: consolidate-text
|
||||
7.8% in inter step 2/16: attach
|
||||
2.2% not specifically accounted for
|
||||
42.1% in running Inter pipeline
|
||||
12.2% in step preparation
|
||||
9.8% in inter step 7/16: consolidate-text
|
||||
7.9% in inter step 6/16: load-binary-kits
|
||||
6.8% in inter step 16/16: generate inform6 -> auto.inf
|
||||
1.4% in inter step 11/16: make-identifiers-unique
|
||||
1.5% in inter step 11/16: make-identifiers-unique
|
||||
0.4% in inter step 12/16: reconcile-verbs
|
||||
0.2% in inter step 14/16: eliminate-redundant-operations
|
||||
0.2% in inter step 6/16: assimilate
|
||||
0.2% in inter step 8/16: resolve-external-symbols
|
||||
0.3% in inter step 14/16: eliminate-redundant-operations
|
||||
0.3% in inter step 5/16: assimilate
|
||||
0.3% in inter step 8/16: resolve-external-symbols
|
||||
0.1% in inter step 10/16: detect-indirect-calls
|
||||
0.1% in inter step 13/16: eliminate-redundant-labels
|
||||
0.1% in inter step 4/16: parse-linked-matter
|
||||
0.1% in inter step 5/16: resolve-conditional-compilation
|
||||
0.1% in inter step 3/16: parse-linked-matter
|
||||
0.1% in inter step 4/16: resolve-conditional-compilation
|
||||
0.1% in inter step 9/16: inspect-plugs
|
||||
1.9% not specifically accounted for
|
||||
1.6% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
1.6% not specifically accounted for
|
||||
1.8% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
read <- *in
|
||||
attach
|
||||
load-binary-kits
|
||||
parse-insertions
|
||||
parse-linked-matter
|
||||
resolve-conditional-compilation
|
||||
|
|
|
@ -1,16 +1,13 @@
|
|||
read <- *in
|
||||
attach
|
||||
parse-insertions
|
||||
parse-linked-matter
|
||||
resolve-conditional-compilation
|
||||
assimilate
|
||||
consolidate-text
|
||||
resolve-external-symbols
|
||||
inspect-plugs
|
||||
detect-indirect-calls
|
||||
make-identifiers-unique
|
||||
reconcile-verbs
|
||||
eliminate-redundant-labels
|
||||
eliminate-redundant-operations
|
||||
|
||||
run pipeline normalise
|
||||
|
||||
load-binary-kits
|
||||
|
||||
run pipeline link
|
||||
run pipeline optimise
|
||||
|
||||
! The following does nothing if the variable *tout does not exist
|
||||
|
||||
optionally-generate text -> *tout
|
||||
generate -> *out
|
||||
|
|
6
inform7/Internal/Pipelines/link.interpipeline
Normal file
6
inform7/Internal/Pipelines/link.interpipeline
Normal file
|
@ -0,0 +1,6 @@
|
|||
consolidate-text
|
||||
resolve-external-symbols
|
||||
inspect-plugs
|
||||
detect-indirect-calls
|
||||
make-identifiers-unique
|
||||
reconcile-verbs
|
4
inform7/Internal/Pipelines/normalise.interpipeline
Normal file
4
inform7/Internal/Pipelines/normalise.interpipeline
Normal file
|
@ -0,0 +1,4 @@
|
|||
parse-insertions
|
||||
parse-linked-matter
|
||||
resolve-conditional-compilation
|
||||
assimilate
|
2
inform7/Internal/Pipelines/optimise.interpipeline
Normal file
2
inform7/Internal/Pipelines/optimise.interpipeline
Normal file
|
@ -0,0 +1,2 @@
|
|||
eliminate-redundant-labels
|
||||
eliminate-redundant-operations
|
File diff suppressed because one or more lines are too long
|
@ -96,7 +96,7 @@ form, which would be written to |*outt|.
|
|||
if (kit_to_assimilate) ADD_TO_LINKED_LIST(kit_to_assimilate, pathname, inter_paths);
|
||||
inter_pipeline *SS;
|
||||
if (pipeline_as_file)
|
||||
SS = ParsingPipelines::from_file(pipeline_as_file, pipeline_vars);
|
||||
SS = ParsingPipelines::from_file(pipeline_as_file, pipeline_vars, NULL);
|
||||
else
|
||||
SS = ParsingPipelines::from_text(pipeline_as_text, pipeline_vars);
|
||||
linked_list *requirements_list = NEW_LINKED_LIST(attachment_instruction);
|
||||
|
|
|
@ -4,4 +4,5 @@ parse-linked-matter
|
|||
resolve-conditional-compilation
|
||||
assimilate
|
||||
resolve-external-symbols
|
||||
detect-indirect-calls
|
||||
generate binary -> *out
|
||||
|
|
|
@ -13,14 +13,18 @@ typedef struct inter_pipeline {
|
|||
struct dictionary *variables;
|
||||
int erroneous; /* a syntax error occurred when parsing this */
|
||||
struct pipeline_ephemera ephemera; /* temporary storage when running */
|
||||
struct linked_list *search_list; /* used when parsing only */
|
||||
struct pathname *local;
|
||||
CLASS_DEFINITION
|
||||
} inter_pipeline;
|
||||
|
||||
inter_pipeline *ParsingPipelines::new_pipeline(dictionary *D) {
|
||||
inter_pipeline *ParsingPipelines::new_pipeline(dictionary *D, linked_list *L, pathname *local) {
|
||||
inter_pipeline *S = CREATE(inter_pipeline);
|
||||
S->variables = D;
|
||||
S->steps = NEW_LINKED_LIST(pipeline_step);
|
||||
S->erroneous = FALSE;
|
||||
S->search_list = L;
|
||||
S->local = local;
|
||||
RunningPipelines::clean_pipeline(S);
|
||||
return S;
|
||||
}
|
||||
|
@ -109,8 +113,9 @@ supplied on the command line. Here, we turn such a description -- in effect
|
|||
a program for a very simple programming language -- into an //inter_pipeline//.
|
||||
|
||||
=
|
||||
inter_pipeline *ParsingPipelines::from_file(filename *F, dictionary *D) {
|
||||
inter_pipeline *S = ParsingPipelines::new_pipeline(D);
|
||||
inter_pipeline *ParsingPipelines::from_file(filename *F, dictionary *D,
|
||||
linked_list *search_list) {
|
||||
inter_pipeline *S = ParsingPipelines::new_pipeline(D, search_list, Filenames::up(F));
|
||||
TextFiles::read(F, FALSE, "can't open inter pipeline file",
|
||||
TRUE, ParsingPipelines::scan_line, NULL, (void *) S);
|
||||
if (S->erroneous) return NULL;
|
||||
|
@ -123,15 +128,15 @@ void ParsingPipelines::scan_line(text_stream *line, text_file_position *tfp, voi
|
|||
}
|
||||
|
||||
inter_pipeline *ParsingPipelines::from_text(text_stream *instructions, dictionary *D) {
|
||||
inter_pipeline *S = ParsingPipelines::new_pipeline(D);
|
||||
inter_pipeline *S = ParsingPipelines::new_pipeline(D, NULL, NULL);
|
||||
ParsingPipelines::parse_line(S, instructions, NULL);
|
||||
if (S->erroneous) return NULL;
|
||||
return S;
|
||||
}
|
||||
|
||||
@ Either way, then, a sequence of 1 or more textual lines of description is
|
||||
passed to the following. It breaks down the line into 1 or more steps, divided
|
||||
by commas.
|
||||
passed to the following. It breaks down the line into 1 or more instructions,
|
||||
divided by commas.
|
||||
|
||||
=
|
||||
void ParsingPipelines::parse_line(inter_pipeline *pipeline, text_stream *instructions,
|
||||
|
@ -144,21 +149,46 @@ void ParsingPipelines::parse_line(inter_pipeline *pipeline, text_stream *instruc
|
|||
PUT_TO(T, Str::get(P));
|
||||
match_results mr = Regexp::create_mr();
|
||||
while (Regexp::match(&mr, T, L" *(%c+?) *,+ *(%c*?) *")) {
|
||||
pipeline_step *ST = ParsingPipelines::parse_step(pipeline, mr.exp[0], tfp);
|
||||
if (ST) ADD_TO_LINKED_LIST(ST, pipeline_step, pipeline->steps);
|
||||
else pipeline->erroneous = TRUE;
|
||||
ParsingPipelines::parse_instruction(pipeline, mr.exp[0], tfp);
|
||||
Str::copy(T, mr.exp[1]);
|
||||
}
|
||||
if (Regexp::match(&mr, T, L" *(%c+?) *")) {
|
||||
pipeline_step *ST = ParsingPipelines::parse_step(pipeline, mr.exp[0], tfp);
|
||||
if (ST) ADD_TO_LINKED_LIST(ST, pipeline_step, pipeline->steps);
|
||||
else pipeline->erroneous = TRUE;
|
||||
}
|
||||
if (Regexp::match(&mr, T, L" *(%c+?) *"))
|
||||
ParsingPipelines::parse_instruction(pipeline, mr.exp[0], tfp);
|
||||
Regexp::dispose_of(&mr);
|
||||
DISCARD_TEXT(T)
|
||||
}
|
||||
|
||||
@ Finally, an individual textual description |S| of a dtep is turned into a
|
||||
@ Instructions are mostly steps, but...
|
||||
|
||||
=
|
||||
void ParsingPipelines::parse_instruction(inter_pipeline *pipeline, text_stream *T,
|
||||
text_file_position *tfp) {
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, T, L"!%c*")) {
|
||||
;
|
||||
} else if (Regexp::match(&mr, T, L"run pipeline (%c*)")) {
|
||||
#ifdef SUPERVISOR_MODULE
|
||||
filename *F = InterSkill::filename_of_pipeline(mr.exp[0], pipeline->search_list);
|
||||
#endif
|
||||
#ifndef SUPERVISOR_MODULE
|
||||
filename *F = Filenames::in(pipeline->local, mr.exp[0]);
|
||||
#endif
|
||||
if (F == NULL) {
|
||||
PipelineErrors::syntax_with(tfp, T,
|
||||
"unable to find the pipeline '%S'", mr.exp[0]);
|
||||
pipeline->erroneous = TRUE;
|
||||
} else
|
||||
TextFiles::read(F, FALSE, "can't open inter pipeline file",
|
||||
TRUE, ParsingPipelines::scan_line, NULL, (void *) pipeline);
|
||||
} else {
|
||||
pipeline_step *ST = ParsingPipelines::parse_step(pipeline, T, tfp);
|
||||
if (ST) ADD_TO_LINKED_LIST(ST, pipeline_step, pipeline->steps);
|
||||
else pipeline->erroneous = TRUE;
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
||||
|
||||
@ Finally, an individual textual description |S| of a step is turned into a
|
||||
//pipeline_step//.
|
||||
|
||||
For documentation on the syntax here, see //inter: Pipelines and Stages//.
|
||||
|
@ -291,7 +321,7 @@ pipeline_stage *ParsingPipelines::parse_stage(text_stream *from) {
|
|||
SimpleStages::create_pipeline_stages();
|
||||
CodeGen::create_pipeline_stage();
|
||||
NewStage::create_pipeline_stage();
|
||||
AttachStage::create_pipeline_stage();
|
||||
LoadBinaryKitsStage::create_pipeline_stage();
|
||||
CodeGen::Assimilate::create_pipeline_stage();
|
||||
DetectIndirectCalls::create_pipeline_stage();
|
||||
CodeGen::Eliminate::create_pipeline_stage();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[AttachStage::] Attach Stage.
|
||||
[LoadBinaryKitsStage::] Load Binary Kits Stage.
|
||||
|
||||
Reading other Inter trees as binary files, and attaching them at given points
|
||||
in the main Inter tree.
|
||||
|
@ -11,15 +11,16 @@ enough, with each of those secondary Inter trees in turn being read in from
|
|||
a binary Inter file, and then attached to (i.e., made part of) the primary tree.
|
||||
|
||||
The primary tree cannot "know", of itself, where these secondary trees will
|
||||
live in the file system, so the |attach| stage needs to be given instructions
|
||||
live in the file system, so the |load-binary-kits| stage needs to be given instructions
|
||||
on the side. This is done with the "requirements list" of the step.
|
||||
|
||||
=
|
||||
void AttachStage::create_pipeline_stage(void) {
|
||||
ParsingPipelines::new_stage(I"attach", AttachStage::run, NO_STAGE_ARG, FALSE);
|
||||
void LoadBinaryKitsStage::create_pipeline_stage(void) {
|
||||
ParsingPipelines::new_stage(I"load-binary-kits",
|
||||
LoadBinaryKitsStage::run, NO_STAGE_ARG, FALSE);
|
||||
}
|
||||
|
||||
int AttachStage::run(pipeline_step *step) {
|
||||
int LoadBinaryKitsStage::run(pipeline_step *step) {
|
||||
attachment_instruction *req;
|
||||
LOOP_OVER_LINKED_LIST(req, attachment_instruction, step->ephemera.requirements_list) {
|
||||
inter_architecture *A = PipelineModule::get_architecture();
|
||||
|
@ -54,7 +55,7 @@ typedef struct attachment_instruction {
|
|||
CLASS_DEFINITION
|
||||
} attachment_instruction;
|
||||
|
||||
attachment_instruction *AttachStage::new(pathname *P, text_stream *attach) {
|
||||
attachment_instruction *LoadBinaryKitsStage::new(pathname *P, text_stream *attach) {
|
||||
attachment_instruction *link = CREATE(attachment_instruction);
|
||||
link->location = P;
|
||||
link->attachment_point = Str::duplicate(attach);
|
|
@ -18,7 +18,7 @@ Chapter 2: Pipelines
|
|||
|
||||
Chapter 3: Linking Stages
|
||||
New Stage
|
||||
Attach Stage
|
||||
Load Binary Kits Stage
|
||||
Parsing Stages
|
||||
Template Reader
|
||||
Parse Linked Matter
|
||||
|
|
Loading…
Reference in a new issue