mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 18:14:21 +03:00
822 lines
121 KiB
HTML
822 lines
121 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Booklet Title</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
</head>
|
|
<body>
|
|
|
|
<!--Weave of '1/mr' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>Main Routine</b></li></ul><p class="purpose">As with all C programs, Inform begins execution in a |main| routine, reading command-line arguments to modify its behaviour.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. Flags</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Flags. </b>These flags are set by command-line parameters. <code class="display"><span class="extract">for_release</span></code> will be set
|
|
when Inform is used in a run started by clicking on the Release button in the
|
|
application. <code class="display"><span class="extract">rng_seed_at_start_of_play</span></code> is not used by the application,
|
|
but the <code class="display"><span class="extract">intest</span></code> program makes use of this feature to make repeated
|
|
tests of the Z-machine story file produce identical sequences of random
|
|
numbers: without this, we would have difficulty comparing a transcript of
|
|
text produced by the story file on one compilation from another.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><code class="display"><span class="extract">story_filename_extension</span></code> is also set as a result of information passed
|
|
from the application via the command line to Inform. In order for Inform to
|
|
write good releasing instructions, it needs to know the story file format
|
|
(".z5", ".z8", etc.) of the finally produced story file. But since Inform 7
|
|
compiles only to Inter and thence to Inform 6 code, and does not run I6
|
|
itself, it has no way of telling what the application intends to do on this.
|
|
So the application is required to give Inform advance notice of this via a
|
|
command-line option.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">this_is_a_debug_compile</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Destined to be compiled with debug features</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">this_is_a_release_compile</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Omit sections of source text marked not for release</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">existing_story_file</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Ignore source text to blorb existing story file?</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rng_seed_at_start_of_play</span><span class="plain"> = 0; </span> <span class="comment">The seed value, or 0 if not seeded</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">census_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Inform running only to update extension documentation</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">story_filename_extension</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span> <span class="comment">What story file we will eventually have</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">show_progress_indicator</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span> <span class="comment">Produce percentage of progress messages</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">scoring_option_set</span><span class="plain"> = </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">; </span> <span class="comment">Whether in this case a score is kept at run time</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">disable_import</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>This flag is set by the use option "Use no deprecated features", and makes
|
|
Inform strict in rejecting syntaxes we intend to get rid of later on.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_deprecated_features</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">forbid syntaxes marked as deprecated?</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>Broadly speaking, what Inform does can be divided into two halves: in
|
|
the first half, it reads all the assertions, makes all the objects and
|
|
global variables and constructs the model world; in the second half,
|
|
it compiles the phrases and grammar to go with it.
|
|
<code class="display"><span class="extract">model_world_constructed</span></code> records which of these halves we are
|
|
currently in: <code class="display"><span class="extract">FALSE</span></code> in the first half, <code class="display"><span class="extract">TRUE</span></code> in the second.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">If there were a third stage, it would be indexing, and during that
|
|
period <code class="display"><span class="extract">indexing_stage</span></code> is <code class="display"><span class="extract">TRUE</span></code>. But by that time the compilation of
|
|
Inform 6 code is complete.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">text_loaded_from_source</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Lexical scanning is done</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">model_world_under_construction</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">World model is being constructed</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">model_world_constructed</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">World model is now constructed</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">indexing_stage</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Everything is done except indexing</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">report_clock_time</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
|
<span class="identifier">time_t</span><span class="plain"> </span><span class="identifier">right_now</span><span class="plain">;</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">inter_processing_file</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">inter_processing_pipeline</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">dictionary</span><span class="plain"> *</span><span class="identifier">pipeline_vars</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">path_to_inform7</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CoreMain::main</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">argc</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">argv</span><span class="plain">[]) {</span>
|
|
<span class="identifier">clock_t</span><span class="plain"> </span><span class="identifier">start</span><span class="plain"> = </span><span class="identifier">clock</span><span class="plain">();</span>
|
|
<<span class="cwebmacro">Banner and startup</span> <span class="cwebmacronumber">4.1</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Register command-line arguments</span> <span class="cwebmacronumber">4.3</span>><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">proceed</span><span class="plain"> = </span><span class="identifier">CommandLine::read</span><span class="plain">(</span><span class="identifier">argc</span><span class="plain">, </span><span class="identifier">argv</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, &</span><span class="functiontext">CoreMain::switch</span><span class="plain">, &</span><span class="functiontext">CoreMain::bareword</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">proceed</span><span class="plain">) {</span>
|
|
<<span class="cwebmacro">Establish our location in the file system</span> <span class="cwebmacronumber">4.4</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">With that done, configure all other settings</span> <span class="cwebmacronumber">4.5</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Open the debugging log and the problems report</span> <span class="cwebmacronumber">4.6</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Boot up the compiler</span> <span class="cwebmacronumber">4.7</span>><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">census_mode</span><span class="plain">)</span>
|
|
<span class="functiontext">Extensions::Files::handle_census_mode</span><span class="plain">();</span>
|
|
<span class="reserved">else</span><span class="plain"> {</span>
|
|
<<span class="cwebmacro">Perform lexical analysis</span> <span class="cwebmacronumber">4.8</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Perform semantic analysis</span> <span class="cwebmacronumber">4.9</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Read the assertions in two passes</span> <span class="cwebmacronumber">4.10</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Make the model world</span> <span class="cwebmacronumber">4.11</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Tables and grammar</span> <span class="cwebmacronumber">4.12</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Phrases and rules</span> <span class="cwebmacronumber">4.13</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Generate inter</span> <span class="cwebmacronumber">4.14</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Convert inter to Inform 6</span> <span class="cwebmacronumber">4.15</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Generate metadata</span> <span class="cwebmacronumber">4.16</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Post mortem logging</span> <span class="cwebmacronumber">4.17</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">clock_t</span><span class="plain"> </span><span class="identifier">end</span><span class="plain"> = </span><span class="identifier">clock</span><span class="plain">();</span>
|
|
<<span class="cwebmacro">Shutdown and rennab</span> <span class="cwebmacronumber">4.18</span>><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> > 0) </span><span class="identifier">Problems::Fatal::exit</span><span class="plain">(1);</span>
|
|
<span class="reserved">return</span><span class="plain"> 0;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function CoreMain::main appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_1"></a><b>§4.1. </b>It is the dawn of time...
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Banner and startup</span> <span class="cwebmacronumber">4.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">Errors::set_internal_handler</span><span class="plain">(&</span><span class="identifier">Problems::Issue::internal_error_fn</span><span class="plain">);</span>
|
|
<span class="identifier">story_filename_extension</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"ulx"</span><span class="plain">;</span>
|
|
<span class="identifier">inter_processing_pipeline</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
|
|
|
<span class="identifier">PRINT</span><span class="plain">(</span><span class="string">"%B build %B has started.\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
<span class="identifier">STREAM_FLUSH</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_2"></a><b>§4.2. </b>Note that the locations manager is also allowed to process command-line
|
|
arguments in order to set certain pathnames or filenames, so the following
|
|
list is not exhaustive.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">CASE_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">CENSUS_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">CLOCK_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">DEBUG_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">EXTERNAL_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">FORMAT_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">CRASHALL_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">INTERNAL_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">NOINDEX_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">NOPROGRESS_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">PROJECT_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">RELEASE_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">REQUIRE_PROBLEM_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">RNG_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">SIGILS_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">TRANSIENT_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">PIPELINE_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">PIPELINE_FILE_CLSW</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">PIPELINE_VARIABLE_CLSW</span>
|
|
</pre>
|
|
<p class="inwebparagraph"><a id="SP4_3"></a><b>§4.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Register command-line arguments</span> <span class="cwebmacronumber">4.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">CommandLine::declare_heading</span><span class="plain">(</span>
|
|
<span class="identifier">L</span><span class="string">"inform7: a compiler from source text to Inform 6 code\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span>
|
|
<span class="identifier">L</span><span class="string">"Usage: inform7 [OPTIONS] [SOURCETEXT]\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
|
|
<span class="identifier">CommandLine::declare_textual_switch</span><span class="plain">(</span><span class="constant">FORMAT_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"format"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"compile I6 code suitable for the virtual machine X"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">CENSUS_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"census"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"perform an extensions census (rather than compile)"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">CLOCK_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"clock"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"time how long inform7 takes to run"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">DEBUG_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"debug"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"compile with debugging features even on a Release"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">CRASHALL_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"crash-all"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"crash intentionally on Problem messages (for debugger backtraces)"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">NOINDEX_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"noindex"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"don't produce an Index"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">NOPROGRESS_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"noprogress"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"don't display progress percentages"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">RELEASE_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"release"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"compile a version suitable for a Release build"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">RNG_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"rng"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"fix the random number generator of the story file (for testing)"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">SIGILS_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"sigils"</span><span class="plain">, 1,</span>
|
|
<span class="identifier">L</span><span class="string">"print Problem message sigils (for testing)"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">CASE_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"case"</span><span class="plain">, 2,</span>
|
|
<span class="identifier">L</span><span class="string">"make any source links refer to the source in extension example X"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">REQUIRE_PROBLEM_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"require-problem"</span><span class="plain">, 2,</span>
|
|
<span class="identifier">L</span><span class="string">"return 0 unless exactly this Problem message is generated (for testing)"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">PIPELINE_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"pipeline"</span><span class="plain">, 2,</span>
|
|
<span class="identifier">L</span><span class="string">"specify code-generation pipeline"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">PIPELINE_FILE_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"pipeline-file"</span><span class="plain">, 2,</span>
|
|
<span class="identifier">L</span><span class="string">"specify code-generation pipeline from file X"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">PIPELINE_VARIABLE_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"variable"</span><span class="plain">, 2,</span>
|
|
<span class="identifier">L</span><span class="string">"set pipeline variable X (in form name=value)"</span><span class="plain">);</span>
|
|
|
|
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">PROJECT_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"project"</span><span class="plain">, 2,</span>
|
|
<span class="identifier">L</span><span class="string">"work within the Inform project X"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">INTERNAL_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"internal"</span><span class="plain">, 2,</span>
|
|
<span class="identifier">L</span><span class="string">"use X as the location of built-in material such as the Standard Rules"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">EXTERNAL_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"external"</span><span class="plain">, 2,</span>
|
|
<span class="identifier">L</span><span class="string">"use X as the user's home for installed material such as extensions"</span><span class="plain">);</span>
|
|
<span class="identifier">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">TRANSIENT_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"transient"</span><span class="plain">, 2,</span>
|
|
<span class="identifier">L</span><span class="string">"use X for transient data such as the extensions census"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_4"></a><b>§4.4. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Establish our location in the file system</span> <span class="cwebmacronumber">4.4</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">path_to_inform7</span><span class="plain"> = </span><span class="identifier">Pathnames::installation_path</span><span class="plain">(</span><span class="string">"INFORM7_PATH"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"inform7"</span><span class="plain">);</span>
|
|
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">def_int</span><span class="plain"> = </span><span class="identifier">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">Pathnames::up</span><span class="plain">(</span><span class="identifier">path_to_inform7</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"Internal"</span><span class="plain">);</span>
|
|
<span class="functiontext">Locations::set_default_internal</span><span class="plain">(</span><span class="identifier">def_int</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_5"></a><b>§4.5. </b><code class="display">
|
|
<<span class="cwebmacrodefn">With that done, configure all other settings</span> <span class="cwebmacronumber">4.5</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="functiontext">VirtualMachines::set_identifier</span><span class="plain">(</span><span class="identifier">story_filename_extension</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Locations::set_defaults</span><span class="plain">(</span><span class="identifier">census_mode</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
|
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"Unable to create folders in local file system"</span><span class="plain">);</span>
|
|
<span class="identifier">Log::set_debug_log_filename</span><span class="plain">(</span><span class="identifier">filename_of_debugging_log</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_6"></a><b>§4.6. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Open the debugging log and the problems report</span> <span class="cwebmacronumber">4.6</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">Log::open</span><span class="plain">();</span>
|
|
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Inform called as:"</span><span class="plain">);</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">argc</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">LOG</span><span class="plain">(</span><span class="string">" %s"</span><span class="plain">, </span><span class="identifier">argv</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]);</span>
|
|
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">Problems::Issue::start_problems_report</span><span class="plain">();</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_7"></a><b>§4.7. </b></p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">define</span> <span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">mark</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) {</span>
|
|
<span class="identifier">clock_t</span><span class="plain"> </span><span class="identifier">now</span><span class="plain"> = </span><span class="identifier">clock</span><span class="plain">();</span>
|
|
<span class="identifier">routine</span><span class="plain">();</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">cs</span><span class="plain"> = ((</span><span class="reserved">int</span><span class="plain">) (</span><span class="identifier">clock</span><span class="plain">() - </span><span class="identifier">now</span><span class="plain">)) / (</span><span class="identifier">CLOCKS_PER_SEC</span><span class="plain">/100);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cs</span><span class="plain"> > 0) </span><span class="identifier">LOG</span><span class="plain">(</span><span class="string">".... "</span><span class="plain"> #</span><span class="identifier">routine</span><span class="plain"> </span><span class="string">"() took %dcs\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">cs</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Boot up the compiler</span> <span class="cwebmacronumber">4.7</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="functiontext">Emit::begin</span><span class="plain">();</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Semantics::read_preform</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Semantics::read_preform"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Plugins::Manage::start</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Plugins::Manage::start"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">InferenceSubjects::begin</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"InferenceSubjects::begin"</span><span class="plain">)</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_8"></a><b>§4.8. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Perform lexical analysis</span> <span class="cwebmacronumber">4.8</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="functiontext">ProgressBar::update_progress_bar</span><span class="plain">(0, 0);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Lexical analysis"</span><span class="plain">);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">SourceFiles::read_primary_source_text</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"SourceFiles::read_primary_source_text"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Sentences::RuleSubtrees::create_standard_csps</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Sentences::RuleSubtrees::create_standard_csps"</span><span class="plain">)</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_9"></a><b>§4.9. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Perform semantic analysis</span> <span class="cwebmacronumber">4.9</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="functiontext">ProgressBar::update_progress_bar</span><span class="plain">(1, 0);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Semantic analysis Ia"</span><span class="plain">);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">ParseTreeUsage::plant_parse_tree</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ParseTreeUsage::plant_parse_tree"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">StructuralSentences::break_source</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"StructuralSentences::break_source"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Extensions::Inclusion::traverse</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Extensions::Inclusion::traverse"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Sentences::Headings::satisfy_dependencies</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Sentences::Headings::satisfy_dependencies"</span><span class="plain">)</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Initialise language semantics"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">Plugins::Manage::load_types</span><span class="plain">();</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">BinaryPredicates::make_built_in</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"BinaryPredicates::make_built_in"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">NewVerbs::add_inequalities</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"NewVerbs::add_inequalities"</span><span class="plain">)</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Semantic analysis Ib"</span><span class="plain">);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Sentences::VPs::traverse</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Sentences::VPs::traverse"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Sentences::Rearrangement::tidy_up_ofs_and_froms</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Sentences::Rearrangement::tidy_up_ofs_and_froms"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Sentences::RuleSubtrees::register_recently_lexed_phrases</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Sentences::RuleSubtrees::register_recently_lexed_phrases"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">StructuralSentences::declare_source_loaded</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"StructuralSentences::declare_source_loaded"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">Kinds::Interpreter::include_templates_for_kinds</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::Interpreter::include_templates_for_kinds"</span><span class="plain">)</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Semantic analysis II"</span><span class="plain">);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">ParseTreeUsage::verify</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ParseTreeUsage::verify"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Extensions::Files::check_versions</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Extensions::Files::check_versions"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Sentences::Headings::make_tree</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Sentences::Headings::make_tree"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Sentences::Headings::write_as_xml</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Sentences::Headings::write_as_xml"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Sentences::Headings::write_as_xml</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Sentences::Headings::write_as_xml"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Modules::traverse_to_define</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Modules::traverse_to_define"</span><span class="plain">)</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Semantic analysis III"</span><span class="plain">);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Adjectives::traverse</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Adjectives::traverse"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Equations::traverse_to_create</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Equations::traverse_to_create"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Tables::traverse_to_create</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Tables::traverse_to_create"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::traverse_for_names</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::traverse_for_names"</span><span class="plain">)</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_10"></a><b>§4.10. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Read the assertions in two passes</span> <span class="cwebmacronumber">4.10</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="functiontext">ProgressBar::update_progress_bar</span><span class="plain">(2, 0);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"First pass through assertions"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">Assertions::Traverse::traverse</span><span class="plain">(1);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Tables::traverse_to_stock</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Tables::traverse_to_stock"</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Second pass through assertions"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">Assertions::Traverse::traverse</span><span class="plain">(2);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::kind_declarations</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::RunTime::kind_declarations"</span><span class="plain">)</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_11"></a><b>§4.11. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Make the model world</span> <span class="cwebmacronumber">4.11</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Making the model world"</span><span class="plain">);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">UseOptions::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"UseOptions::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Properties::emit</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Properties::emit"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Properties::Emit::allocate_attributes</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Properties::Emit::allocate_attributes"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::name_all</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::name_all"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">UseNouns::name_all</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"UseNouns::name_all"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">World::complete</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"World::complete"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Properties::Measurement::validate_definitions</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Properties::Measurement::validate_definitions"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">BinaryPredicates::make_built_in_further</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"BinaryPredicates::make_built_in_further"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Bibliographic::IFID::define_UUID</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Bibliographic::IFID::define_UUID"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Figures::compile_ResourceIDsOfFigures_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Figures::compile_ResourceIDsOfFigures_array"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Sounds::compile_ResourceIDsOfSounds_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Sounds::compile_ResourceIDsOfSounds_array"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Player::InitialSituation</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Player::InitialSituation"</span><span class="plain">)</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_12"></a><b>§4.12. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Tables and grammar</span> <span class="cwebmacronumber">4.12</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Tables and grammar"</span><span class="plain">);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Tables::check_tables_for_kind_clashes</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Tables::check_tables_for_kind_clashes"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Tables::Support::compile_print_table_names</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Tables::Support::compile_print_table_names"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::traverse</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::traverse"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">World::complete_additions</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"World::complete_additions"</span><span class="plain">)</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_13"></a><b>§4.13. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Phrases and rules</span> <span class="cwebmacronumber">4.13</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="functiontext">ProgressBar::update_progress_bar</span><span class="plain">(3, 0);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Phrases and rules"</span><span class="plain">);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">LiteralPatterns::define_named_phrases</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"LiteralPatterns::define_named_phrases"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::traverse</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::traverse"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::register_meanings</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::register_meanings"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::parse_rule_parameters</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::parse_rule_parameters"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::add_rules_to_rulebooks</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::add_rules_to_rulebooks"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::parse_rule_placements</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::parse_rule_placements"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Equations::traverse_to_stock</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Equations::traverse_to_stock"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Tables::traverse_to_stock</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Tables::traverse_to_stock"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Properties::annotate_attributes</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Properties::annotate_attributes"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Rulebooks::Outcomes::RulebookOutcomePrintingRule</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Rulebooks::Outcomes::RulebookOutcomePrintingRule"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::compile_instance_counts</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::RunTime::compile_instance_counts"</span><span class="plain">)</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_14"></a><b>§4.14. </b>This is where we hand over to regular template files — containing code
|
|
passed through as I6 source, as well as a few further commands — starting
|
|
with "Output.i6t".
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Generate inter</span> <span class="cwebmacronumber">4.14</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="functiontext">ProgressBar::update_progress_bar</span><span class="plain">(4, 0);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Generating inter"</span><span class="plain">);</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">UseOptions::compile_icl_commands</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"UseOptions::compile_icl_commands"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">TemplateFiles::compile_build_number</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TemplateFiles::compile_build_number"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Plugins::Manage::define_IFDEF_symbols</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Plugins::Manage::define_IFDEF_symbols"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Bibliographic::compile_constants</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Bibliographic::compile_constants"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Extensions::Files::ShowExtensionVersions_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Extensions::Files::ShowExtensionVersions_routine"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">Kinds::Constructors::compile_I6_constants</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::Constructors::compile_I6_constants"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Score::compile_max_score</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Score::compile_max_score"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">UseOptions::TestUseOption_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"UseOptions::TestUseOption_routine"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Activities::compile_activity_constants</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Activities::compile_activity_constants"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Activities::Activity_before_rulebooks_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Activities::Activity_before_rulebooks_array"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Activities::Activity_for_rulebooks_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Activities::Activity_for_rulebooks_array"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Activities::Activity_after_rulebooks_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Activities::Activity_after_rulebooks_array"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Activities::Activity_atb_rulebooks_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Activities::Activity_atb_rulebooks_array"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Relations::compile_defined_relation_constants</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Relations::compile_defined_relation_constants"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::compile_data_type_support_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::RunTime::compile_data_type_support_routines"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::I7_Kind_Name_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::RunTime::I7_Kind_Name_routine"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">World::Compile::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"World::Compile::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Backdrops::write_found_in_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Backdrops::write_found_in_routines"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Map::write_door_dir_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Map::write_door_dir_routines"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Map::write_door_to_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Map::write_door_to_routines"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::General::write_parse_name_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::General::write_parse_name_routines"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Regions::write_regional_found_in_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Regions::write_regional_found_in_routines"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Tables::complete</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Tables::complete"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Tables::Support::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Tables::Support::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Equations::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Equations::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::Patterns::Named::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::Patterns::Named::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::ActionData</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::ActionData"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::ActionCoding_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::ActionCoding_array"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::ActionHappened</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::ActionHappened"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Actions::compile_action_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Actions::compile_action_routines"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Lines::MistakeActionSub_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Lines::MistakeActionSub_routine"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::compile_first_block</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::compile_first_block"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::compile_rulebooks</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::compile_rulebooks"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::rulebooks_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::rulebooks_array"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Scenes::DetectSceneChange_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Scenes::DetectSceneChange_routine"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Scenes::ShowSceneStatus_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Scenes::ShowSceneStatus_routine"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Files::arrays</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Files::arrays"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Rulebooks::rulebook_var_creators</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Rulebooks::rulebook_var_creators"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Activities::activity_var_creators</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Activities::activity_var_creators"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Relations::IterateRelations</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Relations::IterateRelations"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::RulebookNames_array</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::RulebookNames_array"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::RulePrintingRule_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::RulePrintingRule_routine"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Verbs::prepare</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Verbs::prepare"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Verbs::compile_conditions</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Verbs::compile_conditions"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Values::number</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::number"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Values::truth_state</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::truth_state"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Values::time</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::time"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Values::compile_type_gprs</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Values::compile_type_gprs"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">NewVerbs::ConjugateVerb</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"NewVerbs::ConjugateVerb"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Adjectives::Meanings::agreements</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Adjectives::Meanings::agreements"</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">this_is_a_release_compile</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">this_is_a_debug_compile</span><span class="plain">)) {</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">PL::Parsing::TestScripts::write_text</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::write_text"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">PL::Parsing::TestScripts::TestScriptSub_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::TestScriptSub_routine"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">PL::Parsing::TestScripts::InternalTestCases_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::InternalTestCases_routine"</span><span class="plain">)</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">PL::Parsing::TestScripts::TestScriptSub_stub_routine</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::TestScripts::TestScriptSub_stub_routine"</span><span class="plain">)</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Lists::check</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lists::check"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Lists::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lists::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::compile_as_needed</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::compile_as_needed"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Strings::compile_responses</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Strings::compile_responses"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Lists::check</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lists::check"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Lists::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lists::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Relations::compile_defined_relations</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Relations::compile_defined_relations"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Manager::compile_as_needed</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Manager::compile_as_needed"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Strings::TextSubstitutions::allow_no_further_text_subs</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Strings::TextSubstitutions::allow_no_further_text_subs"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Filters::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Filters::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Chronology::past_actions_i6_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::past_actions_i6_routines"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Chronology::chronology_extents_i6_escape</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::chronology_extents_i6_escape"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Chronology::past_tenses_i6_escape</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::past_tenses_i6_escape"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Chronology::allow_no_further_past_tenses</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Chronology::allow_no_further_past_tenses"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Verbs::compile_all</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Verbs::compile_all"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Parsing::Tokens::Filters::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Parsing::Tokens::Filters::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Properties::Measurement::compile_MADJ_routines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Properties::Measurement::compile_MADJ_routines"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Calculus::Propositions::Deferred::compile_remaining_deferred</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Calculus::Propositions::Deferred::compile_remaining_deferred"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Calculus::Deferrals::allow_no_further_deferrals</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Calculus::Deferrals::allow_no_further_deferrals"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Lists::check</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lists::check"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Lists::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Lists::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Strings::TextLiterals::compile</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Strings::TextLiterals::compile"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">JumpLabels::compile_necessary_storage</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"JumpLabels::compile_necessary_storage"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::compile_heap_allocator</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::RunTime::compile_heap_allocator"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Constants::compile_closures</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Constants::compile_closures"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::compile_structures</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Kinds::RunTime::compile_structures"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Rules::check_response_usages</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Rules::check_response_usages"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Timed::check_for_unused</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Timed::check_for_unused"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Showme::compile_SHOWME_details</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Showme::compile_SHOWME_details"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Timed::TimedEventsTable</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Timed::TimedEventsTable"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">Phrases::Timed::TimedEventTimesTable</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Phrases::Timed::TimedEventTimesTable"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="identifier">PL::Naming::compile_cap_short_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"PL::Naming::compile_cap_short_name"</span><span class="plain">)</span>
|
|
<span class="identifier">COMPILATION_STEP</span><span class="plain">(</span><span class="functiontext">UseOptions::configure_template</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"UseOptions::configure_template"</span><span class="plain">)</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_15"></a><b>§4.15. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Convert inter to Inform 6</span> <span class="cwebmacronumber">4.15</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">problem_count</span><span class="plain"> == 0) && (</span><span class="identifier">existing_story_file</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
|
<span class="identifier">clock_t</span><span class="plain"> </span><span class="identifier">front_end</span><span class="plain"> = </span><span class="identifier">clock</span><span class="plain">();</span>
|
|
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Front end elapsed time: %dcs\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, ((</span><span class="reserved">int</span><span class="plain">) (</span><span class="identifier">front_end</span><span class="plain"> - </span><span class="identifier">start</span><span class="plain">)) / (</span><span class="identifier">CLOCKS_PER_SEC</span><span class="plain">/100));</span>
|
|
<span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Converting inter to Inform 6"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">existing_story_file</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">this_is_a_release_compile</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">this_is_a_debug_compile</span><span class="plain">)) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VirtualMachines::is_16_bit</span><span class="plain">())</span>
|
|
<span class="identifier">CodeGen::Architecture::set</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"16d"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span>
|
|
<span class="identifier">CodeGen::Architecture::set</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"32d"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">VirtualMachines::is_16_bit</span><span class="plain">())</span>
|
|
<span class="identifier">CodeGen::Architecture::set</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"16"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span>
|
|
<span class="identifier">CodeGen::Architecture::set</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"32"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<<span class="cwebmacro">Ensure inter pipeline variables dictionary</span> <span class="cwebmacronumber">4.15.1</span>><span class="plain">;</span>
|
|
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"*in"</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"*memory"</span><span class="plain">);</span>
|
|
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"*out"</span><span class="plain">), </span><span class="identifier">Filenames::get_leafname</span><span class="plain">(</span><span class="identifier">filename_of_compiled_i6_code</span><span class="plain">));</span>
|
|
<span class="identifier">codegen_pipeline</span><span class="plain"> *</span><span class="identifier">SS</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">inter_processing_file</span><span class="plain">)</span>
|
|
<span class="identifier">SS</span><span class="plain"> = </span><span class="identifier">CodeGen::Pipeline::parse_from_file</span><span class="plain">(</span><span class="identifier">Filenames::from_text</span><span class="plain">(</span><span class="identifier">inter_processing_file</span><span class="plain">), </span><span class="identifier">pipeline_vars</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">inter_processing_pipeline</span><span class="plain">) > 0)</span>
|
|
<span class="identifier">SS</span><span class="plain"> = </span><span class="identifier">CodeGen::Pipeline::parse</span><span class="plain">(</span><span class="identifier">inter_processing_pipeline</span><span class="plain">, </span><span class="identifier">pipeline_vars</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">area</span><span class="plain">=0; </span><span class="identifier">area</span><span class="plain"><</span><span class="constant">NO_FS_AREAS</span><span class="plain">; </span><span class="identifier">area</span><span class="plain">++) {</span>
|
|
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">pathname_of_inter_resources</span><span class="plain">[</span><span class="identifier">area</span><span class="plain">];</span>
|
|
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"default.interpipeline"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">TextFiles::exists</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">)) {</span>
|
|
<span class="identifier">SS</span><span class="plain"> = </span><span class="identifier">CodeGen::Pipeline::parse_from_file</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">pipeline_vars</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">SS</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
|
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"The Inter pipeline description contained errors"</span><span class="plain">);</span>
|
|
<span class="identifier">CodeGen::Pipeline::set_repository</span><span class="plain">(</span><span class="identifier">SS</span><span class="plain">, </span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
|
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">inter_library</span><span class="plain">);</span>
|
|
<span class="identifier">inter_library</span><span class="plain"> *</span><span class="identifier">bi</span><span class="plain"> =</span>
|
|
<span class="identifier">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"basic_inform"</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_i6t_files</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">bi</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
|
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"The Basic Inform inter library cannot be found"</span><span class="plain">);</span>
|
|
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">bi</span><span class="plain">, </span><span class="identifier">inter_library</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
|
|
<span class="identifier">inter_library</span><span class="plain"> *</span><span class="identifier">stdr</span><span class="plain"> =</span>
|
|
<span class="identifier">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"standard_rules"</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_i6t_files</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">stdr</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
|
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"The Standard Rules inter library cannot be found"</span><span class="plain">);</span>
|
|
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">stdr</span><span class="plain">, </span><span class="identifier">inter_library</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
|
|
<span class="identifier">CodeGen::Pipeline::run</span><span class="plain">(</span><span class="identifier">Filenames::get_path_to</span><span class="plain">(</span><span class="identifier">filename_of_compiled_i6_code</span><span class="plain">),</span>
|
|
<span class="identifier">SS</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_i6t_files</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Back end elapsed time: %dcs\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, ((</span><span class="reserved">int</span><span class="plain">) (</span><span class="identifier">clock</span><span class="plain">() - </span><span class="identifier">front_end</span><span class="plain">)) / (</span><span class="identifier">CLOCKS_PER_SEC</span><span class="plain">/100));</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Compilation now complete"</span><span class="plain">);</span>
|
|
|
|
<span class="identifier">pipeline_vars</span><span class="plain"> = </span><span class="identifier">CodeGen::Pipeline::basic_dictionary</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"output.i6"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_15_1"></a><b>§4.15.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Ensure inter pipeline variables dictionary</span> <span class="cwebmacronumber">4.15.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pipeline_vars</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
|
<span class="identifier">pipeline_vars</span><span class="plain"> = </span><span class="identifier">CodeGen::Pipeline::basic_dictionary</span><span class="plain">(</span>
|
|
<span class="identifier">Filenames::get_leafname</span><span class="plain">(</span><span class="identifier">filename_of_compiled_i6_code</span><span class="plain">));</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4_15">§4.15</a>, <a href="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_16"></a><b>§4.16. </b>Metadata.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Generate metadata</span> <span class="cwebmacronumber">4.16</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">PL::Bibliographic::Release::write_ifiction_and_blurb</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) {</span>
|
|
<span class="functiontext">TemplateFiles::interpret</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Index.i6t"</span><span class="plain">, -1);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_17"></a><b>§4.17. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Post mortem logging</span> <span class="cwebmacronumber">4.17</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) {</span>
|
|
<span class="identifier">TemplateReader::report_unacted_upon_interventions</span><span class="plain">();</span>
|
|
<span class="comment">ParseTreeUsage::write_main_source_to_log();</span>
|
|
<span class="comment">Memory::log_statistics();</span>
|
|
<span class="comment">Preform::log_language();</span>
|
|
<span class="comment">Index::DocReferences::log_statistics();</span>
|
|
<span class="comment">NewVerbs::log_all();</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_18"></a><b>§4.18. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Shutdown and rennab</span> <span class="cwebmacronumber">4.18</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">proceed</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::write_reports</span><span class="plain">(</span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
|
|
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Total of %d files written as streams.\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">total_file_writes</span><span class="plain">);</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">cpu_time_used</span><span class="plain"> = ((</span><span class="reserved">int</span><span class="plain">) (</span><span class="identifier">end</span><span class="plain"> - </span><span class="identifier">start</span><span class="plain">)) / (</span><span class="identifier">CLOCKS_PER_SEC</span><span class="plain">/100);</span>
|
|
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"CPU time: %d centiseconds\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">cpu_time_used</span><span class="plain">);</span>
|
|
<span class="identifier">Writers::log_escape_usage</span><span class="plain">();</span>
|
|
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">, </span><span class="string">"%s has finished"</span><span class="plain">, </span><span class="identifier">HUMAN_READABLE_INTOOL_NAME</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">report_clock_time</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">, </span><span class="string">": %d centiseconds used"</span><span class="plain">, </span><span class="identifier">cpu_time_used</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">, </span><span class="string">".\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_log_phases</span><span class="plain"> = 0;</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreMain::go_to_log_phase</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">argument</span><span class="plain">) {</span>
|
|
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">phase_names</span><span class="plain">[] = {</span>
|
|
<span class="string">"I"</span><span class="plain">, </span><span class="string">"II"</span><span class="plain">, </span><span class="string">"III"</span><span class="plain">, </span><span class="string">"IV"</span><span class="plain">, </span><span class="string">"V"</span><span class="plain">, </span><span class="string">"VI"</span><span class="plain">, </span><span class="string">"VII"</span><span class="plain">, </span><span class="string">"VIII"</span><span class="plain">, </span><span class="string">"IX"</span><span class="plain">, </span><span class="string">"X"</span><span class="plain">,</span>
|
|
<span class="string">"XI"</span><span class="plain">, </span><span class="string">"XII"</span><span class="plain">, </span><span class="string">"XIII"</span><span class="plain">, </span><span class="string">"XIV"</span><span class="plain">, </span><span class="string">"XV"</span><span class="plain">, </span><span class="string">"XVI"</span><span class="plain">, </span><span class="string">"XVII"</span><span class="plain">, </span><span class="string">"XVIII"</span><span class="plain">, </span><span class="string">"XIX"</span><span class="plain">, </span><span class="string">"XX"</span><span class="plain">, </span><span class="string">"XXI"</span><span class="plain">, </span><span class="string">"XXII"</span><span class="plain"> };</span>
|
|
<span class="identifier">Log::new_phase</span><span class="plain">(</span><span class="identifier">phase_names</span><span class="plain">[</span><span class="identifier">no_log_phases</span><span class="plain">], </span><span class="identifier">argument</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_log_phases</span><span class="plain"> < 21) </span><span class="identifier">no_log_phases</span><span class="plain">++;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function CoreMain::go_to_log_phase is used in <a href="#SP4_8">§4.8</a>, <a href="#SP4_9">§4.9</a>, <a href="#SP4_10">§4.10</a>, <a href="#SP4_11">§4.11</a>, <a href="#SP4_12">§4.12</a>, <a href="#SP4_13">§4.13</a>, <a href="#SP4_14">§4.14</a>, <a href="#SP4_15">§4.15</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreMain::switch</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">arg</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">state</span><span class="plain">) {</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">id</span><span class="plain">) {</span>
|
|
<span class="comment">Miscellaneous boolean settings</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CENSUS_CLSW</span><span class="plain">: </span><span class="identifier">census_mode</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CLOCK_CLSW</span><span class="plain">: </span><span class="identifier">report_clock_time</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CRASHALL_CLSW</span><span class="plain">: </span><span class="identifier">debugger_mode</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="identifier">crash_on_all_errors</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DEBUG_CLSW</span><span class="plain">: </span><span class="identifier">this_is_a_debug_compile</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NOINDEX_CLSW</span><span class="plain">: </span><span class="identifier">do_not_generate_index</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NOPROGRESS_CLSW</span><span class="plain">: </span><span class="identifier">show_progress_indicator</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">?</span><span class="identifier">FALSE</span><span class="plain">:</span><span class="identifier">TRUE</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELEASE_CLSW</span><span class="plain">: </span><span class="identifier">this_is_a_release_compile</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RNG_CLSW</span><span class="plain">:</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">val</span><span class="plain">) </span><span class="identifier">rng_seed_at_start_of_play</span><span class="plain"> = -16339;</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">rng_seed_at_start_of_play</span><span class="plain"> = 0;</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SIGILS_CLSW</span><span class="plain">: </span><span class="identifier">echo_problem_message_sigils</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
|
|
<span class="comment">Other settings</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">FORMAT_CLSW</span><span class="plain">: </span><span class="identifier">story_filename_extension</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CASE_CLSW</span><span class="plain">: </span><span class="identifier">HTMLFiles::set_source_link_case</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">REQUIRE_PROBLEM_CLSW</span><span class="plain">: </span><span class="identifier">Problems::Fatal::require</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PIPELINE_CLSW</span><span class="plain">: </span><span class="identifier">inter_processing_pipeline</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PIPELINE_FILE_CLSW</span><span class="plain">: </span><span class="identifier">inter_processing_file</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PIPELINE_VARIABLE_CLSW</span><span class="plain">: {</span>
|
|
<span class="identifier">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="identifier">Regexp::create_mr</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">arg</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c+)=(%c+)"</span><span class="plain">)) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::get_first_char</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">) != </span><span class="character">'*'</span><span class="plain">) {</span>
|
|
<span class="identifier">Errors::fatal</span><span class="plain">(</span><span class="string">"-variable names must begin with '*'"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<<span class="cwebmacro">Ensure inter pipeline variables dictionary</span> <span class="cwebmacronumber">4.15.1</span>><span class="plain">;</span>
|
|
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]), </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">Errors::fatal</span><span class="plain">(</span><span class="string">"-variable should take the form 'name=value'"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="comment">Useful pathnames</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PROJECT_CLSW</span><span class="plain">: </span><span class="functiontext">Locations::set_project</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INTERNAL_CLSW</span><span class="plain">: </span><span class="functiontext">Locations::set_internal</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EXTERNAL_CLSW</span><span class="plain">: </span><span class="functiontext">Locations::set_external</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TRANSIENT_CLSW</span><span class="plain">: </span><span class="functiontext">Locations::set_transient</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unimplemented switch"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreMain::bareword</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">opt</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">state</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Locations::set_I7_source</span><span class="plain">(</span><span class="identifier">opt</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
|
<span class="identifier">Errors::fatal_with_text</span><span class="plain">(</span><span class="string">"unknown command line argument: %S (see -help)"</span><span class="plain">, </span><span class="identifier">opt</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreMain::disable_importation</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="identifier">disable_import</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreMain::set_inter_pipeline</span><span class="plain">(</span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
|
|
<span class="identifier">inter_processing_pipeline</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">inter_processing_pipeline</span><span class="plain">, </span><span class="string">"%W"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="identifier">Str::delete_first_character</span><span class="plain">(</span><span class="identifier">inter_processing_pipeline</span><span class="plain">);</span>
|
|
<span class="identifier">Str::delete_last_character</span><span class="plain">(</span><span class="identifier">inter_processing_pipeline</span><span class="plain">);</span>
|
|
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Setting pipeline %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">inter_processing_pipeline</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function CoreMain::switch is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="endnote">The function CoreMain::bareword is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="endnote">The function CoreMain::disable_importation is used in 7/hdn (<a href="7-hdn.html#SP10_2">§10.2</a>).</p>
|
|
|
|
<p class="endnote">The function CoreMain::set_inter_pipeline is used in 26/uo (<a href="26-uo.html#SP11_2">§11.2</a>).</p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><i>(This section begins Chapter 1: Configuration and Control.)</i></li><li><a href="1-cm.html">Continue with 'Core Module'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</body>
|
|
</html>
|
|
|