1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-26 04:00:43 +03:00

Standardised module interfaces to foundation and syntax

This commit is contained in:
Graham Nelson 2020-03-28 15:00:33 +00:00
parent 8b4dfae940
commit 883077bbc1
66 changed files with 1241 additions and 1467 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6Q28 'Krypton' (26 March 2020)
v10.1.0-alpha.1+6Q29 'Krypton' (28 March 2020)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 26 March 2020
Build Number: 6Q28
Build Date: 28 March 2020
Build Number: 6Q29

View file

@ -59,9 +59,10 @@
<!--Weave of '1/am' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">arch</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Arch Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
@ -85,7 +86,8 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
@ -94,16 +96,19 @@
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
<span class="functiontext">Architectures::create</span><span class="plain">();</span>
<span class="functiontext">TargetVMs::create</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ArchModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function ArchModule::start appears nowhere else.</p>
<p class="endnote">The function ArchModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
@ -156,31 +161,6 @@
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ArchModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function ArchModule::end appears nowhere else.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -59,15 +59,16 @@
<!--Weave of '1/cm' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">codegen</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Codegen Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP2">&#167;2. Setting up the memory manager</a></li><li><a href="#SP4">&#167;4. The beginning</a></li><li><a href="#SP5">&#167;5. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">CODEGEN_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Setting up the memory manager. </b>We need to itemise the structures we'll want to allocate:
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>To begin with, this module needs to allocate memory:
</p>
@ -84,9 +85,6 @@
<span class="definitionkeyword">enum</span> <span class="constant">generated_segment_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">link_instruction_MT</span>
</pre>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>With allocation functions:
</p>
<pre class="display">
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">I6T_intervention</span><span class="plain">)</span>
@ -104,18 +102,18 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodegenModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">4.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">4.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">4.5</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">4.6</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">4.7</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.6</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodegenModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
@ -123,14 +121,16 @@ foundation module does that automatically.)
<p class="endnote">The function CodegenModule::start appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP4_1"></a><b>&#167;4.1. </b></p>
<p class="endnote">The function CodegenModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b></p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">CODE_GENERATION_MREASON</span>
</pre>
<p class="inwebparagraph"><a id="SP4_2"></a><b>&#167;4.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">4.2</span>&gt; =
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
@ -140,10 +140,10 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4_3"></a><b>&#167;4.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">4.3</span>&gt; =
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.3</span>&gt; =
</code></p>
@ -153,9 +153,9 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4_4"></a><b>&#167;4.4. </b></p>
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b></p>
<pre class="definitions">
@ -165,8 +165,8 @@ foundation module does that automatically.)
<span class="definitionkeyword">enum</span> <span class="constant">ELIMINATION_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">CONSTANT_DEPTH_CALCULATION_DA</span>
</pre>
<p class="inwebparagraph"><a id="SP4_5"></a><b>&#167;4.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">4.5</span>&gt; =
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
@ -180,10 +180,10 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4_6"></a><b>&#167;4.6. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">4.6</span>&gt; =
<p class="inwebparagraph"><a id="SP3_6"></a><b>&#167;3.6. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.6</span>&gt; =
</code></p>
@ -193,32 +193,7 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP4_7"></a><b>&#167;4.7. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">4.7</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodegenModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CodegenModule::end appears nowhere else.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 1: Setting Up.)</i></li><li><a href="1-stg.html">Continue with 'Stages'</a></li></ul><hr class="tocbar">

View file

@ -59,21 +59,16 @@
<!--Weave of '1/cm' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</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>Core Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP2">&#167;2. Setting up the memory manager</a></li><li><a href="#SP5">&#167;5. The beginning</a></li><li><a href="#SP8">&#167;8. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>There is no interesting code in this section: all Intools modules open with
a section like this one, configuring the memory management and debugging log
features we will use from <code class="display"><span class="extract">foundation</span></code>.
</p>
<p class="inwebparagraph">The following symbol is defined in every tool incorporating this module:
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">CORE_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Setting up the memory manager. </b>We need to itemise the structures we'll want to allocate:
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>To begin with, this module needs to allocate memory:
</p>
@ -259,13 +254,12 @@ features we will use from <code class="display"><span class="extract">foundation
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>Next we define some functions, by macro, which write to the debugging log
or other text streams.
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">WORDING_LOGS_ALLOWED</span>
<span class="definitionkeyword">define</span> <span class="identifier">REGISTER_WRITER</span><span class="plain">(</span><span class="identifier">c</span><span class="plain">, </span><span class="identifier">f</span><span class="plain">) </span><span class="identifier">Writers::register_logger</span><span class="plain">(</span><span class="identifier">c</span><span class="plain">, &amp;</span><span class="identifier">f</span><span class="plain">##</span><span class="identifier">_writer</span><span class="plain">);</span>
<span class="definitionkeyword">define</span> <span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">f</span><span class="plain">)</span>
<span class="reserved">void</span><span class="plain"> </span><span class="identifier">f</span><span class="plain">##</span><span class="identifier">_writer</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">format</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">obj</span><span class="plain">) { </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">SDL</span><span class="plain"> = </span><span class="identifier">DL</span><span class="plain">; </span><span class="identifier">DL</span><span class="plain"> = </span><span class="identifier">format</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">DL</span><span class="plain">) </span><span class="identifier">f</span><span class="plain">((</span><span class="identifier">t</span><span class="plain">) </span><span class="identifier">obj</span><span class="plain">); </span><span class="identifier">DL</span><span class="plain"> = </span><span class="identifier">SDL</span><span class="plain">; }</span>
@ -311,7 +305,8 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b></p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
@ -321,12 +316,16 @@ foundation module does that automatically.)
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">6.5</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">6.6</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CoreModule::start appears nowhere else.</p>
<p class="endnote">The function CoreModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP6_1"></a><b>&#167;6.1. </b>Not all of our memory will be claimed in the form of structures: now and then
we need to use the equivalent of traditional <code class="display"><span class="extract">malloc</span></code> and <code class="display"><span class="extract">calloc</span></code> routines.
</p>
@ -544,17 +543,232 @@ we need to use the equivalent of traditional <code class="display"><span class="
<p class="endnote">The function CoreModule::writer is used in <a href="#SP6_3">&#167;6.3</a>.</p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. The end. </b></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b>This module uses <code class="display"><span class="extract">syntax</span></code>, and adds the following annotations to the syntax
tree; though it's a little like itemising the baubles on a Christmas tree.
</p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">action_meaning_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">action_pattern</span></code>: meaning in parse tree when used as noun</span>
<span class="definitionkeyword">enum</span> <span class="constant">aph_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">adjectival_phrase</span></code>: which adjective is asserted</span>
<span class="definitionkeyword">enum</span> <span class="constant">category_of_I6_translation_ANNOT</span><span class="plain"> </span> <span class="comment">int: what sort of "translates into I6" sentence this is</span>
<span class="definitionkeyword">enum</span> <span class="constant">clears_pronouns_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this sentence erases the current value of "it"</span>
<span class="definitionkeyword">enum</span> <span class="constant">colon_block_command_ANNOT</span><span class="plain"> </span> <span class="comment">int: this COMMAND uses the ":" not begin/end syntax</span>
<span class="definitionkeyword">enum</span> <span class="constant">condition_tense_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">time_period</span></code>: for specification nodes</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_action_name_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">action_name</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_action_pattern_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">action_pattern</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_activity_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">activity</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_binary_predicate_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">binary_predicate</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_constant_phrase_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">constant_phrase</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_enumeration_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: which one from an enumerated kind</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_equation_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">equation</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_grammar_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">grammar_verb</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_instance_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">instance</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_local_variable_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">local_variable</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_named_action_pattern_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">named_action_pattern</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_named_rulebook_outcome_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">named_rulebook_outcome</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_nonlocal_variable_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">nonlocal_variable</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_number_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: which integer this is</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_property_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">property</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_rule_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">rule</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_rulebook_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">rulebook</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_scene_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">scene</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_table_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">table</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_table_column_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">table_column</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_text_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">text_stream</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_use_option_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">use_option</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_verb_form_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_form</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">control_structure_used_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">control_structure_phrase</span></code>: for CODE BLOCK nodes only</span>
<span class="definitionkeyword">enum</span> <span class="constant">converted_SN_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: marking descriptions</span>
<span class="definitionkeyword">enum</span> <span class="constant">creation_proposition_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">pcalc_prop</span></code>: proposition which newly created value satisfies</span>
<span class="definitionkeyword">enum</span> <span class="constant">creation_site_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: whether an instance was created from this node</span>
<span class="definitionkeyword">enum</span> <span class="constant">defn_language_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inform_language</span></code>: what language this definition is in</span>
<span class="definitionkeyword">enum</span> <span class="constant">end_control_structure_used_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">control_structure_phrase</span></code>: for CODE BLOCK nodes only</span>
<span class="definitionkeyword">enum</span> <span class="constant">epistemological_status_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: a bitmap of results from checking an ambiguous reading</span>
<span class="definitionkeyword">enum</span> <span class="constant">evaluation_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: result of evaluating the text</span>
<span class="definitionkeyword">enum</span> <span class="constant">examine_for_ofs_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: mark this as a possible site for removing "of" tree breaks</span>
<span class="definitionkeyword">enum</span> <span class="constant">explicit_iname_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inter_name</span></code>: is this value explicitly an iname?</span>
<span class="definitionkeyword">enum</span> <span class="constant">explicit_literal_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: my value is an explicit integer or text</span>
<span class="definitionkeyword">enum</span> <span class="constant">explicit_vh_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">value_holster</span></code>: used for compiling I6-level properties</span>
<span class="definitionkeyword">enum</span> <span class="constant">from_text_substitution_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: whether this is an implicit say invocation</span>
<span class="definitionkeyword">enum</span> <span class="constant">grammar_token_code_ANNOT</span><span class="plain"> </span> <span class="comment">int: used to identify grammar tokens</span>
<span class="definitionkeyword">enum</span> <span class="constant">grammar_token_literal_ANNOT</span><span class="plain"> </span> <span class="comment">int: for grammar tokens which are literal words</span>
<span class="definitionkeyword">enum</span> <span class="constant">grammar_token_relation_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">binary_predicate</span></code>: for relation tokens</span>
<span class="definitionkeyword">enum</span> <span class="constant">grammar_value_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: used as a marker when evaluating Understand grammar</span>
<span class="definitionkeyword">enum</span> <span class="constant">imperative_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: marking definitions of imperative verbs</span>
<span class="definitionkeyword">enum</span> <span class="constant">implicit_in_creation_of_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inference_subject</span></code>: for assemblies</span>
<span class="definitionkeyword">enum</span> <span class="constant">implicitness_count_ANNOT</span><span class="plain"> </span> <span class="comment">int: keeping track of recursive assemblies</span>
<span class="definitionkeyword">enum</span> <span class="constant">indentation_level_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: for routines written with Pythonesque indentation</span>
<span class="definitionkeyword">enum</span> <span class="constant">interpretation_of_subject_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inference_subject</span></code>: subject, during passes</span>
<span class="definitionkeyword">enum</span> <span class="constant">is_phrase_option_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this unparsed text is a phrase option</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_of_new_variable_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_of_value_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind</span></code>: for specification nodes</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_required_by_context_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind</span></code>: what if anything is expected here</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_resulting_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_variable_declarations_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind_variable_declaration</span></code>: and of these</span>
<span class="definitionkeyword">enum</span> <span class="constant">listing_sense_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: are we listing a rule into something, or out of it?</span>
<span class="definitionkeyword">enum</span> <span class="constant">log_inclusion_sense_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: should we include or exclude this from the debugging log?</span>
<span class="definitionkeyword">enum</span> <span class="constant">lpe_options_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: options set for a literal pattern part</span>
<span class="definitionkeyword">enum</span> <span class="constant">modal_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_conjugation</span></code>: relevant only for that: e.g., "might"</span>
<span class="definitionkeyword">enum</span> <span class="constant">module_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">compilation_module</span></code>: set only for headings, routines and sentences</span>
<span class="definitionkeyword">enum</span> <span class="constant">multiplicity_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: e.g., 5 for "five gold rings"</span>
<span class="definitionkeyword">enum</span> <span class="constant">negated_boolean_ANNOT</span><span class="plain"> </span> <span class="comment">int: set if adjective/verb meant negatively</span>
<span class="definitionkeyword">enum</span> <span class="constant">new_relation_here_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">binary_predicate</span></code>: new relation as subject of "relates" sentence</span>
<span class="definitionkeyword">enum</span> <span class="constant">nothing_object_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this represents <code class="display"><span class="extract">nothing</span></code> at run-time</span>
<span class="definitionkeyword">enum</span> <span class="constant">nowhere_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: used by the spatial plugin to show this represents "nowhere"</span>
<span class="definitionkeyword">enum</span> <span class="constant">phrase_invoked_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">phrase</span></code>: the phrase believed to be invoked...</span>
<span class="definitionkeyword">enum</span> <span class="constant">phrase_option_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: 2^i where i is the option number, 0&lt;= i&lt;16</span>
<span class="definitionkeyword">enum</span> <span class="constant">phrase_options_invoked_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">invocation_options</span></code>: details of any options used</span>
<span class="definitionkeyword">enum</span> <span class="constant">property_name_used_as_noun_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: in ambiguous cases such as "open"</span>
<span class="definitionkeyword">enum</span> <span class="constant">proposition_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">pcalc_prop</span></code>: for specification nodes</span>
<span class="definitionkeyword">enum</span> <span class="constant">prep_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">preposition_identity</span></code>: for e.g. "is on"</span>
<span class="definitionkeyword">enum</span> <span class="constant">quant_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">quantifier</span></code>: for quantified excerpts like "three baskets"</span>
<span class="definitionkeyword">enum</span> <span class="constant">quantification_parameter_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: e.g., 3 for "three baskets"</span>
<span class="definitionkeyword">enum</span> <span class="constant">record_as_self_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: record recipient as <code class="display"><span class="extract">self</span></code> when writing this</span>
<span class="definitionkeyword">enum</span> <span class="constant">relationship_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">binary_predicate</span></code>: for RELATIONSHIP nodes</span>
<span class="definitionkeyword">enum</span> <span class="constant">resolved_ANNOT</span><span class="plain"> </span> <span class="comment">int: temp storage when resolving NPs</span>
<span class="definitionkeyword">enum</span> <span class="constant">response_code_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: for responses only</span>
<span class="definitionkeyword">enum</span> <span class="constant">results_from_splitting_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: node in a routine's parse tree from comma block notation</span>
<span class="definitionkeyword">enum</span> <span class="constant">row_amendable_ANNOT</span><span class="plain"> </span> <span class="comment">int: a candidate row for a table amendment</span>
<span class="definitionkeyword">enum</span> <span class="constant">save_self_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this invocation must save and preserve <code class="display"><span class="extract">self</span></code> at run-time</span>
<span class="definitionkeyword">enum</span> <span class="constant">say_adjective_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">adjectival_phrase</span></code>: ...or the adjective to be agreed with by "say"</span>
<span class="definitionkeyword">enum</span> <span class="constant">say_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_conjugation</span></code>: ...or the verb to be conjugated by "say"</span>
<span class="definitionkeyword">enum</span> <span class="constant">say_verb_negated_ANNOT</span><span class="plain"> </span> <span class="comment">relevant only for that</span>
<span class="definitionkeyword">enum</span> <span class="constant">self_object_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this represents <code class="display"><span class="extract">self</span></code> at run-time</span>
<span class="definitionkeyword">enum</span> <span class="constant">slash_class_ANNOT</span><span class="plain"> </span> <span class="comment">int: used when partitioning grammar tokens</span>
<span class="definitionkeyword">enum</span> <span class="constant">slash_dash_dash_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: used when partitioning grammar tokens</span>
<span class="definitionkeyword">enum</span> <span class="constant">ssp_closing_segment_wn_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: identifier for the last of these, or <code class="display"><span class="extract">-1</span></code></span>
<span class="definitionkeyword">enum</span> <span class="constant">ssp_segment_count_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: number of subsequent complex-say phrases in stream</span>
<span class="definitionkeyword">enum</span> <span class="constant">subject_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inference_subject</span></code>: what this node describes</span>
<span class="definitionkeyword">enum</span> <span class="constant">subject_term_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">pcalc_term</span></code>: what the subject of the subtree was</span>
<span class="definitionkeyword">enum</span> <span class="constant">suppress_newlines_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: whether the next say term runs on</span>
<span class="definitionkeyword">enum</span> <span class="constant">table_cell_unspecified_ANNOT</span><span class="plain"> </span> <span class="comment">int: used to mark table entries as unset</span>
<span class="definitionkeyword">enum</span> <span class="constant">text_unescaped_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: flag used only for literal texts</span>
<span class="definitionkeyword">enum</span> <span class="constant">token_as_parsed_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">token_check_to_do_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">token_to_be_parsed_against_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">turned_already_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: aliasing like "player" to "yourself" performed already</span>
<span class="definitionkeyword">enum</span> <span class="constant">unproven_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this invocation needs run-time typechecking</span>
<span class="definitionkeyword">enum</span> <span class="constant">verb_id_ANNOT</span><span class="plain"> </span> <span class="comment">int: identifying what kind of VERB node</span>
<span class="definitionkeyword">enum</span> <span class="constant">verb_problem_issued_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: has a problem message about the primary verb been issued already?</span>
<span class="definitionkeyword">enum</span> <span class="constant">vu_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_usage</span></code>: for e.g. "does not carry"</span>
<span class="definitionkeyword">enum</span> <span class="constant">you_can_ignore_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: for assertions now drained of meaning</span>
</pre>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CoreModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">aph</span><span class="plain">, </span><span class="identifier">adjectival_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">condition_tense</span><span class="plain">, </span><span class="identifier">time_period</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_activity</span><span class="plain">,</span><span class="reserved"> activity</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_binary_predicate</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_constant_phrase</span><span class="plain">, </span><span class="reserved">constant_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_equation</span><span class="plain">, </span><span class="reserved">equation</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_instance</span><span class="plain">, </span><span class="reserved">instance</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_local_variable</span><span class="plain">, </span><span class="reserved">local_variable</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_named_rulebook_outcome</span><span class="plain">, </span><span class="reserved">named_rulebook_outcome</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_nonlocal_variable</span><span class="plain">, </span><span class="reserved">nonlocal_variable</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_property</span><span class="plain">, </span><span class="reserved">property</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_rule</span><span class="plain">, </span><span class="reserved">rule</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_rulebook</span><span class="plain">, </span><span class="reserved">rulebook</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_table_column</span><span class="plain">, </span><span class="reserved">table_column</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_table</span><span class="plain">, </span><span class="reserved">table</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_text</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_use_option</span><span class="plain">, </span><span class="reserved">use_option</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_verb_form</span><span class="plain">, </span><span class="identifier">verb_form</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">control_structure_used</span><span class="plain">, </span><span class="identifier">control_structure_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">creation_proposition</span><span class="plain">, </span><span class="reserved">pcalc_prop</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">defn_language</span><span class="plain">, </span><span class="identifier">inform_language</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">end_control_structure_used</span><span class="plain">, </span><span class="identifier">control_structure_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">evaluation</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">explicit_vh</span><span class="plain">, </span><span class="identifier">value_holster</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">grammar_token_relation</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">grammar_value</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">implicit_in_creation_of</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">interpretation_of_subject</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_of_new_variable</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_of_value</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_required_by_context</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_resulting</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_variable_declarations</span><span class="plain">, </span><span class="identifier">kind_variable_declaration</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">explicit_iname</span><span class="plain">, </span><span class="identifier">inter_name</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">modal_verb</span><span class="plain">, </span><span class="identifier">verb_conjugation</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">module</span><span class="plain">, </span><span class="identifier">compilation_module</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">new_relation_here</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">phrase_invoked</span><span class="plain">, </span><span class="reserved">phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">phrase_options_invoked</span><span class="plain">, </span><span class="reserved">invocation_options</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">proposition</span><span class="plain">, </span><span class="reserved">pcalc_prop</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">prep</span><span class="plain">, </span><span class="identifier">preposition_identity</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">quant</span><span class="plain">, </span><span class="identifier">quantifier</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">relationship</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">say_adjective</span><span class="plain">, </span><span class="identifier">adjectival_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">say_verb</span><span class="plain">, </span><span class="identifier">verb_conjugation</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">subject_term</span><span class="plain">, </span><span class="reserved">pcalc_term</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">subject</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_as_parsed</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_check_to_do</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_to_be_parsed_against</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">vu</span><span class="plain">, </span><span class="identifier">verb_usage</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CoreModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. </b>So we itemise the pointer-valued annotations below, and the macro expands
to provide their get and set functions:
</p>
<pre class="display">
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">aph</span><span class="plain">, </span><span class="identifier">adjectival_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">condition_tense</span><span class="plain">, </span><span class="identifier">time_period</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_activity</span><span class="plain">,</span><span class="reserved"> activity</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_binary_predicate</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_constant_phrase</span><span class="plain">, </span><span class="reserved">constant_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_equation</span><span class="plain">, </span><span class="reserved">equation</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_instance</span><span class="plain">, </span><span class="reserved">instance</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_local_variable</span><span class="plain">, </span><span class="reserved">local_variable</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_named_rulebook_outcome</span><span class="plain">, </span><span class="reserved">named_rulebook_outcome</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_nonlocal_variable</span><span class="plain">, </span><span class="reserved">nonlocal_variable</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_property</span><span class="plain">, </span><span class="reserved">property</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_rule</span><span class="plain">, </span><span class="reserved">rule</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_rulebook</span><span class="plain">, </span><span class="reserved">rulebook</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_table_column</span><span class="plain">, </span><span class="reserved">table_column</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_table</span><span class="plain">, </span><span class="reserved">table</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_text</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_use_option</span><span class="plain">, </span><span class="reserved">use_option</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_verb_form</span><span class="plain">, </span><span class="identifier">verb_form</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">control_structure_used</span><span class="plain">, </span><span class="identifier">control_structure_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">creation_proposition</span><span class="plain">, </span><span class="reserved">pcalc_prop</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">defn_language</span><span class="plain">, </span><span class="identifier">inform_language</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">end_control_structure_used</span><span class="plain">, </span><span class="identifier">control_structure_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">evaluation</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">explicit_vh</span><span class="plain">, </span><span class="identifier">value_holster</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">grammar_token_relation</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">grammar_value</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">implicit_in_creation_of</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">interpretation_of_subject</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_of_new_variable</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_of_value</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_required_by_context</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_resulting</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_variable_declarations</span><span class="plain">, </span><span class="identifier">kind_variable_declaration</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">modal_verb</span><span class="plain">, </span><span class="identifier">verb_conjugation</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">new_relation_here</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">phrase_invoked</span><span class="plain">, </span><span class="reserved">phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">phrase_options_invoked</span><span class="plain">, </span><span class="reserved">invocation_options</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">proposition</span><span class="plain">, </span><span class="reserved">pcalc_prop</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">prep</span><span class="plain">, </span><span class="identifier">preposition_identity</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">quant</span><span class="plain">, </span><span class="identifier">quantifier</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">relationship</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">say_adjective</span><span class="plain">, </span><span class="identifier">adjectival_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">say_verb</span><span class="plain">, </span><span class="identifier">verb_conjugation</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">subject_term</span><span class="plain">, </span><span class="reserved">pcalc_term</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">subject</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_as_parsed</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_check_to_do</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_to_be_parsed_against</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">vu</span><span class="plain">, </span><span class="identifier">verb_usage</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 1: Configuration and Control.)</i></li><li><a href="1-mr.html">Continue with 'Main Routine'</a></li></ul><hr class="tocbar">

File diff suppressed because one or more lines are too long

View file

@ -453,7 +453,7 @@ subsequent ones.
<p class="inwebparagraph"></p>
<p class="endnote">The function Calculus::Propositions::copy is used in 7/ptu (<a href="7-ptu.html#SP4">&#167;4</a>), 9/rpt (<a href="9-rpt.html#SP2">&#167;2</a>), 11/sc (<a href="11-sc.html#SP3">&#167;3</a>, <a href="11-sc.html#SP3_4">&#167;3.4</a>), 12/dtd (<a href="12-dtd.html#SP7">&#167;7</a>), 12/cdp (<a href="12-cdp.html#SP2_1">&#167;2.1</a>, <a href="12-cdp.html#SP2_1_6">&#167;2.1.6</a>), 14/ds (<a href="14-ds.html#SP6">&#167;6</a>, <a href="14-ds.html#SP9">&#167;9</a>).</p>
<p class="endnote">The function Calculus::Propositions::copy is used in 7/ptu (<a href="7-ptu.html#SP2">&#167;2</a>), 9/rpt (<a href="9-rpt.html#SP2">&#167;2</a>), 11/sc (<a href="11-sc.html#SP3">&#167;3</a>, <a href="11-sc.html#SP3_4">&#167;3.4</a>), 12/dtd (<a href="12-dtd.html#SP7">&#167;7</a>), 12/cdp (<a href="12-cdp.html#SP2_1">&#167;2.1</a>, <a href="12-cdp.html#SP2_1_6">&#167;2.1.6</a>), 14/ds (<a href="14-ds.html#SP6">&#167;6</a>, <a href="14-ds.html#SP9">&#167;9</a>).</p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. </b>Now to concatenate propositions. If E and T are both syntactically valid,
the result will be, too; but the same is not true of well-formedness, so we

View file

@ -363,7 +363,7 @@ created condition:
<p class="inwebparagraph"></p>
<p class="endnote">The function Conditions::log is used in 7/ptu (<a href="7-ptu.html#SP17_1">&#167;17.1</a>).</p>
<p class="endnote">The function Conditions::log is used in 7/ptu (<a href="7-ptu.html#SP14_1">&#167;14.1</a>).</p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. Specificity. </b>We will need a way of determining which of two conditions is more complex,
so that action-based rules with "when..." clauses tacked on can be sorted:

View file

@ -342,7 +342,7 @@ actions and the like:
<p class="inwebparagraph"></p>
<p class="endnote">The function Lvalues::log is used in 7/ptu (<a href="7-ptu.html#SP17_1">&#167;17.1</a>).</p>
<p class="endnote">The function Lvalues::log is used in 7/ptu (<a href="7-ptu.html#SP14_1">&#167;14.1</a>).</p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Compilation. </b></p>

View file

@ -774,7 +774,7 @@ doesn't need to be especially rapid.
<p class="inwebparagraph"></p>
<p class="endnote">The function Rvalues::log is used in 7/ptu (<a href="7-ptu.html#SP17_1">&#167;17.1</a>).</p>
<p class="endnote">The function Rvalues::log is used in 7/ptu (<a href="7-ptu.html#SP14_1">&#167;14.1</a>).</p>
<p class="inwebparagraph"><a id="SP23"></a><b>&#167;23. Compilation. </b>First: clearly everything in this family evaluates, but what kind does the
result have?

View file

@ -1604,7 +1604,7 @@ usages to the debugging log.
<p class="inwebparagraph"></p>
<p class="endnote">The function NewVerbs::log is used in 7/ptu (<a href="7-ptu.html#SP17_1">&#167;17.1</a>).</p>
<p class="endnote">The function NewVerbs::log is used in 7/ptu (<a href="7-ptu.html#SP14_1">&#167;14.1</a>).</p>
<p class="endnote">The function NewVerbs::log_all is used in 1/mr (<a href="1-mr.html#SP1_5">&#167;1.5</a>).</p>

View file

@ -59,133 +59,11 @@
<!--Weave of '7/ptu' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#7">Chapter 7: Sentences</a></li><li><b>Parse Tree Usage</b></li></ul><p class="purpose">Shims for the parse tree.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Definitions</a></li><li><a href="#SP16">&#167;16. The assertion-maker's invariant</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Definitions</a></li><li><a href="#SP13">&#167;13. The assertion-maker's invariant</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Definitions. </b></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>Access routines will be needed for some of these, and the following
constructs them:
</p>
<pre class="display">
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">aph</span><span class="plain">, </span><span class="identifier">adjectival_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">condition_tense</span><span class="plain">, </span><span class="identifier">time_period</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_activity</span><span class="plain">,</span><span class="reserved"> activity</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_binary_predicate</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_constant_phrase</span><span class="plain">, </span><span class="reserved">constant_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_equation</span><span class="plain">, </span><span class="reserved">equation</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_instance</span><span class="plain">, </span><span class="reserved">instance</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_local_variable</span><span class="plain">, </span><span class="reserved">local_variable</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_named_rulebook_outcome</span><span class="plain">, </span><span class="reserved">named_rulebook_outcome</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_nonlocal_variable</span><span class="plain">, </span><span class="reserved">nonlocal_variable</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_property</span><span class="plain">, </span><span class="reserved">property</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_rule</span><span class="plain">, </span><span class="reserved">rule</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_rulebook</span><span class="plain">, </span><span class="reserved">rulebook</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_table_column</span><span class="plain">, </span><span class="reserved">table_column</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_table</span><span class="plain">, </span><span class="reserved">table</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_text</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_use_option</span><span class="plain">, </span><span class="reserved">use_option</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_verb_form</span><span class="plain">, </span><span class="identifier">verb_form</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">control_structure_used</span><span class="plain">, </span><span class="identifier">control_structure_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">creation_proposition</span><span class="plain">, </span><span class="reserved">pcalc_prop</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">defn_language</span><span class="plain">, </span><span class="identifier">inform_language</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">end_control_structure_used</span><span class="plain">, </span><span class="identifier">control_structure_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">evaluation</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">explicit_vh</span><span class="plain">, </span><span class="identifier">value_holster</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">grammar_token_relation</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">grammar_value</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">implicit_in_creation_of</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">interpretation_of_subject</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_of_new_variable</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_of_value</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_required_by_context</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_resulting</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_variable_declarations</span><span class="plain">, </span><span class="identifier">kind_variable_declaration</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">explicit_iname</span><span class="plain">, </span><span class="identifier">inter_name</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">modal_verb</span><span class="plain">, </span><span class="identifier">verb_conjugation</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">module</span><span class="plain">, </span><span class="identifier">compilation_module</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">new_relation_here</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">phrase_invoked</span><span class="plain">, </span><span class="reserved">phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">phrase_options_invoked</span><span class="plain">, </span><span class="reserved">invocation_options</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">proposition</span><span class="plain">, </span><span class="reserved">pcalc_prop</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">prep</span><span class="plain">, </span><span class="identifier">preposition_identity</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">quant</span><span class="plain">, </span><span class="identifier">quantifier</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">relationship</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">say_adjective</span><span class="plain">, </span><span class="identifier">adjectival_phrase</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">say_verb</span><span class="plain">, </span><span class="identifier">verb_conjugation</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">subject_term</span><span class="plain">, </span><span class="reserved">pcalc_term</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">subject</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_as_parsed</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_check_to_do</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_to_be_parsed_against</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">vu</span><span class="plain">, </span><span class="identifier">verb_usage</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>So we itemise the pointer-valued annotations below, and the macro expands
to provide their get and set functions:
</p>
<pre class="display">
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">aph</span><span class="plain">, </span><span class="identifier">adjectival_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">condition_tense</span><span class="plain">, </span><span class="identifier">time_period</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_activity</span><span class="plain">,</span><span class="reserved"> activity</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_binary_predicate</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_constant_phrase</span><span class="plain">, </span><span class="reserved">constant_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_equation</span><span class="plain">, </span><span class="reserved">equation</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_instance</span><span class="plain">, </span><span class="reserved">instance</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_local_variable</span><span class="plain">, </span><span class="reserved">local_variable</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_named_rulebook_outcome</span><span class="plain">, </span><span class="reserved">named_rulebook_outcome</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_nonlocal_variable</span><span class="plain">, </span><span class="reserved">nonlocal_variable</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_property</span><span class="plain">, </span><span class="reserved">property</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_rule</span><span class="plain">, </span><span class="reserved">rule</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_rulebook</span><span class="plain">, </span><span class="reserved">rulebook</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_table_column</span><span class="plain">, </span><span class="reserved">table_column</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_table</span><span class="plain">, </span><span class="reserved">table</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_text</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_use_option</span><span class="plain">, </span><span class="reserved">use_option</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_verb_form</span><span class="plain">, </span><span class="identifier">verb_form</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">control_structure_used</span><span class="plain">, </span><span class="identifier">control_structure_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">creation_proposition</span><span class="plain">, </span><span class="reserved">pcalc_prop</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">defn_language</span><span class="plain">, </span><span class="identifier">inform_language</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">end_control_structure_used</span><span class="plain">, </span><span class="identifier">control_structure_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">evaluation</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">explicit_vh</span><span class="plain">, </span><span class="identifier">value_holster</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">grammar_token_relation</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">grammar_value</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">implicit_in_creation_of</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">interpretation_of_subject</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_of_new_variable</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_of_value</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_required_by_context</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_resulting</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">kind_variable_declarations</span><span class="plain">, </span><span class="identifier">kind_variable_declaration</span><span class="plain">)</span>
<span class="comment">see codegen module for (explicit_iname, inter_name)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">modal_verb</span><span class="plain">, </span><span class="identifier">verb_conjugation</span><span class="plain">)</span>
<span class="comment">see codegen module for (module, compilation_module)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">new_relation_here</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">phrase_invoked</span><span class="plain">, </span><span class="reserved">phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">phrase_options_invoked</span><span class="plain">, </span><span class="reserved">invocation_options</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">proposition</span><span class="plain">, </span><span class="reserved">pcalc_prop</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">prep</span><span class="plain">, </span><span class="identifier">preposition_identity</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">quant</span><span class="plain">, </span><span class="identifier">quantifier</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">relationship</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">say_adjective</span><span class="plain">, </span><span class="identifier">adjectival_phrase</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">say_verb</span><span class="plain">, </span><span class="identifier">verb_conjugation</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">subject_term</span><span class="plain">, </span><span class="reserved">pcalc_term</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">subject</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_as_parsed</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_check_to_do</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">token_to_be_parsed_against</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">vu</span><span class="plain">, </span><span class="identifier">verb_usage</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="definitions">
@ -207,7 +85,7 @@ to provide their get and set functions:
<p class="endnote">The function ParseTreeUsage::copy_annotations appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b></p>
<pre class="definitions">
@ -233,7 +111,7 @@ to provide their get and set functions:
<span class="definitionkeyword">enum</span> <span class="constant">LVALUE_LOCAL_CONTEXT_NT</span><span class="plain"> </span> <span class="comment">Argument which names a local</span>
<span class="definitionkeyword">enum</span> <span class="constant">CONDITION_CONTEXT_NT</span><span class="plain"> </span> <span class="comment">Used for "now" conditions</span>
</pre>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b>Next we enumerate the specification node types, beginning with the one which
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>Next we enumerate the specification node types, beginning with the one which
signifies that text has no known meaning &mdash; either because we tried to make
sense of it and failed, or because we are choosing not to parse it until
later on, and are representing it as unknown until then.
@ -243,7 +121,7 @@ later on, and are representing it as unknown until then.
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">UNKNOWN_NT</span><span class="plain"> </span> <span class="comment">"arfle barfle gloop"</span>
</pre>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b>The next specification nodes are the rvalues. These express I6 values &mdash;
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>The next specification nodes are the rvalues. These express I6 values &mdash;
numbers, objects, text and so on &mdash; but cannot be assigned to, so that in an
assignment of the form "change L to R" they can be used only as R, not L. This
is not the same thing as a constant: for instance, "location of the player"
@ -256,7 +134,7 @@ assignment.
<span class="definitionkeyword">enum</span> <span class="constant">CONSTANT_NT</span><span class="plain"> </span> <span class="comment">"7", "the can't lock a locked door rule", etc.</span>
<span class="definitionkeyword">enum</span> <span class="constant">PHRASE_TO_DECIDE_VALUE_NT</span><span class="plain"> </span> <span class="comment">"holder of the black box"</span>
</pre>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b>Lvalue nodes represent stored I6 data at run-time, which means that they can
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b>Lvalue nodes represent stored I6 data at run-time, which means that they can
be assigned to. (The traditional terms "lvalue" and "rvalue" refer to the left
and right hand side of assignment statements written <code class="display"><span class="extract">A = B</span></code>.) For instance, a
table entry qualifies as an lvalue because it can be both read and changed. To
@ -274,7 +152,7 @@ indicating an owner) is a mere rvalue.
<span class="definitionkeyword">enum</span> <span class="constant">TABLE_ENTRY_NT</span><span class="plain"> </span> <span class="comment">"tonnage in row X of the Table of Corvettes"</span>
<span class="definitionkeyword">enum</span> <span class="constant">LIST_ENTRY_NT</span><span class="plain"> </span> <span class="comment">"item 4 in L"</span>
</pre>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. </b>Condition nodes represent atomic conditions, and also Boolean operations on
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b>Condition nodes represent atomic conditions, and also Boolean operations on
them. It's convenient to represent these operations as nodes in their own right
rather than as (for example) phrases: this reduces parsing ambiguities, but
also makes it easier for us to manipulate the results.
@ -290,118 +168,7 @@ also makes it easier for us to manipulate the results.
<span class="definitionkeyword">enum</span> <span class="constant">TEST_PHRASE_OPTION_NT</span><span class="plain"> </span> <span class="comment">"giving full details", say</span>
<span class="definitionkeyword">enum</span> <span class="constant">TEST_VALUE_NT</span><span class="plain"> </span> <span class="comment">when a value is used as a condition</span>
</pre>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. </b>This is a little like itemising the baubles on a Christmas tree, but here
goes. The annotations used are identified by nonzero ID numbers, as follows:
</p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">action_meaning_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">action_pattern</span></code>: meaning in parse tree when used as noun</span>
<span class="definitionkeyword">enum</span> <span class="constant">aph_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">adjectival_phrase</span></code>: which adjective is asserted</span>
<span class="definitionkeyword">enum</span> <span class="constant">category_of_I6_translation_ANNOT</span><span class="plain"> </span> <span class="comment">int: what sort of "translates into I6" sentence this is</span>
<span class="definitionkeyword">enum</span> <span class="constant">clears_pronouns_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this sentence erases the current value of "it"</span>
<span class="definitionkeyword">enum</span> <span class="constant">colon_block_command_ANNOT</span><span class="plain"> </span> <span class="comment">int: this COMMAND uses the ":" not begin/end syntax</span>
<span class="definitionkeyword">enum</span> <span class="constant">condition_tense_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">time_period</span></code>: for specification nodes</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_action_name_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">action_name</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_action_pattern_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">action_pattern</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_activity_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">activity</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_binary_predicate_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">binary_predicate</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_constant_phrase_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">constant_phrase</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_enumeration_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: which one from an enumerated kind</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_equation_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">equation</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_grammar_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">grammar_verb</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_instance_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">instance</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_local_variable_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">local_variable</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_named_action_pattern_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">named_action_pattern</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_named_rulebook_outcome_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">named_rulebook_outcome</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_nonlocal_variable_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">nonlocal_variable</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_number_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: which integer this is</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_property_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">property</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_rule_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">rule</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_rulebook_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">rulebook</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_scene_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">scene</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_table_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">table</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_table_column_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">table_column</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_text_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">text_stream</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_use_option_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">use_option</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">constant_verb_form_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_form</span></code>: for constant values</span>
<span class="definitionkeyword">enum</span> <span class="constant">control_structure_used_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">control_structure_phrase</span></code>: for CODE BLOCK nodes only</span>
<span class="definitionkeyword">enum</span> <span class="constant">converted_SN_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: marking descriptions</span>
<span class="definitionkeyword">enum</span> <span class="constant">creation_proposition_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">pcalc_prop</span></code>: proposition which newly created value satisfies</span>
<span class="definitionkeyword">enum</span> <span class="constant">creation_site_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: whether an instance was created from this node</span>
<span class="definitionkeyword">enum</span> <span class="constant">defn_language_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inform_language</span></code>: what language this definition is in</span>
<span class="definitionkeyword">enum</span> <span class="constant">end_control_structure_used_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">control_structure_phrase</span></code>: for CODE BLOCK nodes only</span>
<span class="definitionkeyword">enum</span> <span class="constant">epistemological_status_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: a bitmap of results from checking an ambiguous reading</span>
<span class="definitionkeyword">enum</span> <span class="constant">evaluation_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: result of evaluating the text</span>
<span class="definitionkeyword">enum</span> <span class="constant">examine_for_ofs_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: mark this as a possible site for removing "of" tree breaks</span>
<span class="definitionkeyword">enum</span> <span class="constant">explicit_iname_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inter_name</span></code>: is this value explicitly an iname?</span>
<span class="definitionkeyword">enum</span> <span class="constant">explicit_literal_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: my value is an explicit integer or text</span>
<span class="definitionkeyword">enum</span> <span class="constant">explicit_vh_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">value_holster</span></code>: used for compiling I6-level properties</span>
<span class="definitionkeyword">enum</span> <span class="constant">from_text_substitution_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: whether this is an implicit say invocation</span>
<span class="definitionkeyword">enum</span> <span class="constant">grammar_token_code_ANNOT</span><span class="plain"> </span> <span class="comment">int: used to identify grammar tokens</span>
<span class="definitionkeyword">enum</span> <span class="constant">grammar_token_literal_ANNOT</span><span class="plain"> </span> <span class="comment">int: for grammar tokens which are literal words</span>
<span class="definitionkeyword">enum</span> <span class="constant">grammar_token_relation_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">binary_predicate</span></code>: for relation tokens</span>
<span class="definitionkeyword">enum</span> <span class="constant">grammar_value_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: used as a marker when evaluating Understand grammar</span>
<span class="definitionkeyword">enum</span> <span class="constant">imperative_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: marking definitions of imperative verbs</span>
<span class="definitionkeyword">enum</span> <span class="constant">implicit_in_creation_of_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inference_subject</span></code>: for assemblies</span>
<span class="definitionkeyword">enum</span> <span class="constant">implicitness_count_ANNOT</span><span class="plain"> </span> <span class="comment">int: keeping track of recursive assemblies</span>
<span class="definitionkeyword">enum</span> <span class="constant">indentation_level_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: for routines written with Pythonesque indentation</span>
<span class="definitionkeyword">enum</span> <span class="constant">interpretation_of_subject_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inference_subject</span></code>: subject, during passes</span>
<span class="definitionkeyword">enum</span> <span class="constant">is_phrase_option_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this unparsed text is a phrase option</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_of_new_variable_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_of_value_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind</span></code>: for specification nodes</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_required_by_context_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind</span></code>: what if anything is expected here</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_resulting_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">kind_variable_declarations_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">kind_variable_declaration</span></code>: and of these</span>
<span class="definitionkeyword">enum</span> <span class="constant">listing_sense_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: are we listing a rule into something, or out of it?</span>
<span class="definitionkeyword">enum</span> <span class="constant">log_inclusion_sense_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: should we include or exclude this from the debugging log?</span>
<span class="definitionkeyword">enum</span> <span class="constant">lpe_options_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: options set for a literal pattern part</span>
<span class="definitionkeyword">enum</span> <span class="constant">modal_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_conjugation</span></code>: relevant only for that: e.g., "might"</span>
<span class="definitionkeyword">enum</span> <span class="constant">module_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">compilation_module</span></code>: set only for headings, routines and sentences</span>
<span class="definitionkeyword">enum</span> <span class="constant">multiplicity_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: e.g., 5 for "five gold rings"</span>
<span class="definitionkeyword">enum</span> <span class="constant">negated_boolean_ANNOT</span><span class="plain"> </span> <span class="comment">int: set if adjective/verb meant negatively</span>
<span class="definitionkeyword">enum</span> <span class="constant">new_relation_here_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">binary_predicate</span></code>: new relation as subject of "relates" sentence</span>
<span class="definitionkeyword">enum</span> <span class="constant">nothing_object_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this represents <code class="display"><span class="extract">nothing</span></code> at run-time</span>
<span class="definitionkeyword">enum</span> <span class="constant">nowhere_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: used by the spatial plugin to show this represents "nowhere"</span>
<span class="definitionkeyword">enum</span> <span class="constant">phrase_invoked_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">phrase</span></code>: the phrase believed to be invoked...</span>
<span class="definitionkeyword">enum</span> <span class="constant">phrase_option_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: 2^i where i is the option number, 0&lt;= i&lt;16</span>
<span class="definitionkeyword">enum</span> <span class="constant">phrase_options_invoked_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">invocation_options</span></code>: details of any options used</span>
<span class="definitionkeyword">enum</span> <span class="constant">property_name_used_as_noun_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: in ambiguous cases such as "open"</span>
<span class="definitionkeyword">enum</span> <span class="constant">proposition_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">pcalc_prop</span></code>: for specification nodes</span>
<span class="definitionkeyword">enum</span> <span class="constant">prep_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">preposition_identity</span></code>: for e.g. "is on"</span>
<span class="definitionkeyword">enum</span> <span class="constant">quant_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">quantifier</span></code>: for quantified excerpts like "three baskets"</span>
<span class="definitionkeyword">enum</span> <span class="constant">quantification_parameter_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: e.g., 3 for "three baskets"</span>
<span class="definitionkeyword">enum</span> <span class="constant">record_as_self_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: record recipient as <code class="display"><span class="extract">self</span></code> when writing this</span>
<span class="definitionkeyword">enum</span> <span class="constant">relationship_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">binary_predicate</span></code>: for RELATIONSHIP nodes</span>
<span class="definitionkeyword">enum</span> <span class="constant">resolved_ANNOT</span><span class="plain"> </span> <span class="comment">int: temp storage when resolving NPs</span>
<span class="definitionkeyword">enum</span> <span class="constant">response_code_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: for responses only</span>
<span class="definitionkeyword">enum</span> <span class="constant">results_from_splitting_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: node in a routine's parse tree from comma block notation</span>
<span class="definitionkeyword">enum</span> <span class="constant">row_amendable_ANNOT</span><span class="plain"> </span> <span class="comment">int: a candidate row for a table amendment</span>
<span class="definitionkeyword">enum</span> <span class="constant">save_self_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this invocation must save and preserve <code class="display"><span class="extract">self</span></code> at run-time</span>
<span class="definitionkeyword">enum</span> <span class="constant">say_adjective_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">adjectival_phrase</span></code>: ...or the adjective to be agreed with by "say"</span>
<span class="definitionkeyword">enum</span> <span class="constant">say_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_conjugation</span></code>: ...or the verb to be conjugated by "say"</span>
<span class="definitionkeyword">enum</span> <span class="constant">say_verb_negated_ANNOT</span><span class="plain"> </span> <span class="comment">relevant only for that</span>
<span class="definitionkeyword">enum</span> <span class="constant">self_object_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this represents <code class="display"><span class="extract">self</span></code> at run-time</span>
<span class="definitionkeyword">enum</span> <span class="constant">slash_class_ANNOT</span><span class="plain"> </span> <span class="comment">int: used when partitioning grammar tokens</span>
<span class="definitionkeyword">enum</span> <span class="constant">slash_dash_dash_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: used when partitioning grammar tokens</span>
<span class="definitionkeyword">enum</span> <span class="constant">ssp_closing_segment_wn_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: identifier for the last of these, or <code class="display"><span class="extract">-1</span></code></span>
<span class="definitionkeyword">enum</span> <span class="constant">ssp_segment_count_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: number of subsequent complex-say phrases in stream</span>
<span class="definitionkeyword">enum</span> <span class="constant">subject_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inference_subject</span></code>: what this node describes</span>
<span class="definitionkeyword">enum</span> <span class="constant">subject_term_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">pcalc_term</span></code>: what the subject of the subtree was</span>
<span class="definitionkeyword">enum</span> <span class="constant">suppress_newlines_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: whether the next say term runs on</span>
<span class="definitionkeyword">enum</span> <span class="constant">table_cell_unspecified_ANNOT</span><span class="plain"> </span> <span class="comment">int: used to mark table entries as unset</span>
<span class="definitionkeyword">enum</span> <span class="constant">text_unescaped_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: flag used only for literal texts</span>
<span class="definitionkeyword">enum</span> <span class="constant">token_as_parsed_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">token_check_to_do_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">token_to_be_parsed_against_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">parse_node</span></code>: what if anything is returned</span>
<span class="definitionkeyword">enum</span> <span class="constant">turned_already_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: aliasing like "player" to "yourself" performed already</span>
<span class="definitionkeyword">enum</span> <span class="constant">unproven_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this invocation needs run-time typechecking</span>
<span class="definitionkeyword">enum</span> <span class="constant">verb_id_ANNOT</span><span class="plain"> </span> <span class="comment">int: identifying what kind of VERB node</span>
<span class="definitionkeyword">enum</span> <span class="constant">verb_problem_issued_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: has a problem message about the primary verb been issued already?</span>
<span class="definitionkeyword">enum</span> <span class="constant">vu_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_usage</span></code>: for e.g. "does not carry"</span>
<span class="definitionkeyword">enum</span> <span class="constant">you_can_ignore_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: for assertions now drained of meaning</span>
</pre>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. </b></p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b></p>
<pre class="definitions">
@ -412,7 +179,7 @@ goes. The annotations used are identified by nonzero ID numbers, as follows:
<span class="definitionkeyword">enum</span> <span class="constant">COND_NCAT</span>
<span class="definitionkeyword">define</span> <span class="constant">PHRASAL_NFLAG</span><span class="plain"> 0</span><span class="identifier">x00000004</span><span class="plain"> </span> <span class="comment">compiles to a function call</span>
</pre>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. </b></p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. </b></p>
<pre class="definitions">
@ -475,7 +242,7 @@ goes. The annotations used are identified by nonzero ID numbers, as follows:
<p class="endnote">The function ParseTreeUsage::md appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b></p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. </b></p>
<pre class="definitions">
@ -663,7 +430,7 @@ goes. The annotations used are identified by nonzero ID numbers, as follows:
<p class="endnote">The function ParseTreeUsage::allow_annotation_to_specification appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. </b></p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. </b></p>
<pre class="definitions">
@ -683,7 +450,7 @@ goes. The annotations used are identified by nonzero ID numbers, as follows:
<p class="endnote">The function ParseTreeUsage::parentage_exceptions appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. </b>Further classification:
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. </b>Further classification:
</p>
@ -754,17 +521,17 @@ goes. The annotations used are identified by nonzero ID numbers, as follows:
<p class="endnote">The function ParseTreeUsage::is_specification_node_type appears nowhere else.</p>
<p class="endnote">The function ParseTreeUsage::is_lvalue is used in <a href="#SP17_1">&#167;17.1</a>, 12/dtd (<a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP23">&#167;23</a>), 14/sp (<a href="14-sp.html#SP1">&#167;1</a>, <a href="14-sp.html#SP6">&#167;6</a>), 14/lv (<a href="14-lv.html#SP7">&#167;7</a>), 14/cfs (<a href="14-cfs.html#SP7">&#167;7</a>), 14/ds2 (<a href="14-ds2.html#SP10_1_1_3_1">&#167;10.1.1.3.1</a>, <a href="14-ds2.html#SP11_2">&#167;11.2</a>, <a href="14-ds2.html#SP19_5_4">&#167;19.5.4</a>), 25/cii (<a href="25-cii.html#SP3_1_1_2">&#167;3.1.1.2</a>).</p>
<p class="endnote">The function ParseTreeUsage::is_lvalue is used in <a href="#SP14_1">&#167;14.1</a>, 12/dtd (<a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP23">&#167;23</a>), 14/sp (<a href="14-sp.html#SP1">&#167;1</a>, <a href="14-sp.html#SP6">&#167;6</a>), 14/lv (<a href="14-lv.html#SP7">&#167;7</a>), 14/cfs (<a href="14-cfs.html#SP7">&#167;7</a>), 14/ds2 (<a href="14-ds2.html#SP10_1_1_3_1">&#167;10.1.1.3.1</a>, <a href="14-ds2.html#SP11_2">&#167;11.2</a>, <a href="14-ds2.html#SP19_5_4">&#167;19.5.4</a>), 25/cii (<a href="25-cii.html#SP3_1_1_2">&#167;3.1.1.2</a>).</p>
<p class="endnote">The function ParseTreeUsage::is_rvalue is used in <a href="#SP17_1">&#167;17.1</a>, 4/am (<a href="4-am.html#SP25">&#167;25</a>), 11/sm (<a href="11-sm.html#SP10_4">&#167;10.4</a>), 14/sp (<a href="14-sp.html#SP1">&#167;1</a>, <a href="14-sp.html#SP6">&#167;6</a>), 14/cfs (<a href="14-cfs.html#SP7">&#167;7</a>), 22/prcd (<a href="22-prcd.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function ParseTreeUsage::is_rvalue is used in <a href="#SP14_1">&#167;14.1</a>, 4/am (<a href="4-am.html#SP25">&#167;25</a>), 11/sm (<a href="11-sm.html#SP10_4">&#167;10.4</a>), 14/sp (<a href="14-sp.html#SP1">&#167;1</a>, <a href="14-sp.html#SP6">&#167;6</a>), 14/cfs (<a href="14-cfs.html#SP7">&#167;7</a>), 22/prcd (<a href="22-prcd.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function ParseTreeUsage::is_value is used in 9/pk (<a href="9-pk.html#SP4">&#167;4</a>), 14/sp (<a href="14-sp.html#SP7_5">&#167;7.5</a>), 14/ds2 (<a href="14-ds2.html#SP10_1_1_3_1">&#167;10.1.1.3.1</a>, <a href="14-ds2.html#SP19_6_1">&#167;19.6.1</a>), 25/ci (<a href="25-ci.html#SP3_2_3_4_1_1_1">&#167;3.2.3.4.1.1.1</a>).</p>
<p class="endnote">The function ParseTreeUsage::is_condition is used in <a href="#SP17_1">&#167;17.1</a>, 4/am (<a href="4-am.html#SP25">&#167;25</a>), 14/sp (<a href="14-sp.html#SP6">&#167;6</a>), 14/cn (<a href="14-cn.html#SP15">&#167;15</a>), 14/cfs (<a href="14-cfs.html#SP7">&#167;7</a>), 14/ds2 (<a href="14-ds2.html#SP19_6_2">&#167;19.6.2</a>), 25/cp (<a href="25-cp.html#SP5_3_2">&#167;5.3.2</a>).</p>
<p class="endnote">The function ParseTreeUsage::is_condition is used in <a href="#SP14_1">&#167;14.1</a>, 4/am (<a href="4-am.html#SP25">&#167;25</a>), 14/sp (<a href="14-sp.html#SP6">&#167;6</a>), 14/cn (<a href="14-cn.html#SP15">&#167;15</a>), 14/cfs (<a href="14-cfs.html#SP7">&#167;7</a>), 14/ds2 (<a href="14-ds2.html#SP19_6_2">&#167;19.6.2</a>), 25/cp (<a href="25-cp.html#SP5_3_2">&#167;5.3.2</a>).</p>
<p class="endnote">The function ParseTreeUsage::is_phrasal is used in 11/tr (<a href="11-tr.html#SP10">&#167;10</a>), 11/bas (<a href="11-bas.html#SP19">&#167;19</a>), 12/cad (<a href="12-cad.html#SP6">&#167;6</a>), 24/lv (<a href="24-lv.html#SP34">&#167;34</a>).</p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. The assertion-maker's invariant. </b>Hmm: "The Assertion-Maker's Invariant" might make a good magic-realism
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. The assertion-maker's invariant. </b>Hmm: "The Assertion-Maker's Invariant" might make a good magic-realism
novel, in which an enigmatic wise man of Samarkand builds an ingenious box
from camphor-wood in which he traps the dreams of the people, who &mdash; However.
When assertions are processed, the subtrees being compared will be required to
@ -784,7 +551,7 @@ be such that their head nodes each pass this test:
<p class="endnote">The function ParseTreeUsage::allow_in_assertions is used in 9/ma (<a href="9-ma.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP17"></a><b>&#167;17. </b></p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. </b></p>
<pre class="definitions">
@ -798,9 +565,9 @@ be such that their head nodes each pass this test:
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">))) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"'%W'"</span><span class="plain">, </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">));</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">pn</span><span class="plain">-&gt;</span><span class="identifier">node_type</span><span class="plain"> &gt;= </span><span class="constant">UNKNOWN_NT</span><span class="plain">) &amp;&amp; (</span><span class="identifier">pn</span><span class="plain">-&gt;</span><span class="identifier">node_type</span><span class="plain"> &lt;= </span><span class="constant">TEST_VALUE_NT</span><span class="plain">))</span>
&lt;<span class="cwebmacro">Log annotations of specification nodes</span> <span class="cwebmacronumber">17.1</span>&gt;
&lt;<span class="cwebmacro">Log annotations of specification nodes</span> <span class="cwebmacronumber">14.1</span>&gt;
<span class="reserved">else</span>
&lt;<span class="cwebmacro">Log annotations of structural nodes</span> <span class="cwebmacronumber">17.2</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Log annotations of structural nodes</span> <span class="cwebmacronumber">14.2</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
</pre>
@ -808,8 +575,8 @@ be such that their head nodes each pass this test:
<p class="endnote">The function ParseTreeUsage::log_node appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP17_1"></a><b>&#167;17.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Log annotations of specification nodes</span> <span class="cwebmacronumber">17.1</span>&gt; =
<p class="inwebparagraph"><a id="SP14_1"></a><b>&#167;14.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Log annotations of specification nodes</span> <span class="cwebmacronumber">14.1</span>&gt; =
</code></p>
@ -824,14 +591,14 @@ be such that their head nodes each pass this test:
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP17">&#167;17</a>.</p>
<p class="endnote">This code is used in <a href="#SP14">&#167;14</a>.</p>
<p class="inwebparagraph"><a id="SP17_2"></a><b>&#167;17.2. </b>We do not log every annotation: only the few which are most illuminating.
<p class="inwebparagraph"><a id="SP14_2"></a><b>&#167;14.2. </b>We do not log every annotation: only the few which are most illuminating.
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Log annotations of structural nodes</span> <span class="cwebmacronumber">17.2</span>&gt; =
&lt;<span class="cwebmacrodefn">Log annotations of structural nodes</span> <span class="cwebmacronumber">14.2</span>&gt; =
</code></p>
@ -889,9 +656,9 @@ be such that their head nodes each pass this test:
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP17">&#167;17</a>.</p>
<p class="endnote">This code is used in <a href="#SP14">&#167;14</a>.</p>
<p class="inwebparagraph"><a id="SP18"></a><b>&#167;18. </b></p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. </b></p>
<pre class="display">
@ -909,7 +676,7 @@ be such that their head nodes each pass this test:
<p class="endnote">The function ParseTreeUsage::verify is used in 1/htc (<a href="1-htc.html#SP2_3">&#167;2.3</a>).</p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. </b></p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. </b></p>
<pre class="definitions">

View file

@ -56,37 +56,30 @@
</nav>
<main role="main">
<!--Weave of '1/im' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>Index Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<!--Weave of '1/hm' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>HTML Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">HTML_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>To begin with, this module needs to allocate memory:
</p>
<pre class="display">
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">2.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">2.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">2.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">2.4</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
@ -94,70 +87,60 @@ foundation module does that automatically.)
<p class="endnote">The function HTMLModule::start appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.3</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function HTMLModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP2_1"></a><b>&#167;2.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">2.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_2"></a><b>&#167;2.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">2.2</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_3"></a><b>&#167;2.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">2.3</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_4"></a><b>&#167;2.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">2.4</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>1/im</title>
<title>1/hm</title>
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">

View file

@ -63,7 +63,7 @@
<p><span class="purpose"></span></p>
<ul class="sectionlist">
<li>
<p><a href="1-im.html"><spon class="sectiontitle">Index Module</span></a> -
<p><a href="1-hm.html"><spon class="sectiontitle">HTML Module</span></a> -
<span class="purpose">Setting up the use of this module.</span></p>
</li>
</ul>

View file

@ -59,29 +59,18 @@
<!--Weave of '1/im' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">if</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>IF Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Predeclarations</a></li><li><a href="#SP2">&#167;2. Introduction</a></li><li><a href="#SP4">&#167;4. The beginning</a></li><li><a href="#SP5">&#167;5. The end</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP3">&#167;3. The beginning</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Predeclarations. </b></p>
<pre class="display">
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">action_meaning</span><span class="plain">, </span><span class="reserved">action_pattern</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_action_name</span><span class="plain">, </span><span class="reserved">action_name</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_action_pattern</span><span class="plain">, </span><span class="reserved">action_pattern</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_grammar_verb</span><span class="plain">, </span><span class="reserved">grammar_verb</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_named_action_pattern</span><span class="plain">, </span><span class="reserved">named_action_pattern</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_scene</span><span class="plain">, </span><span class="reserved">scene</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">IF_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>To begin with, this module needs to allocate memory:
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>To begin with, this module needs to allocate memory:
</p>
@ -163,7 +152,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The beginning. </b>(The client doesn't need to call the start and end routines, because the
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
</p>
@ -176,10 +165,12 @@ foundation module does that automatically.)
<span class="identifier">COMPILE_WRITER</span><span class="plain">(</span><span class="reserved">action_name</span><span class="plain"> *, </span><span class="functiontext">PL::Actions::log</span><span class="plain">)</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">IFModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">4.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">4.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">4.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">4.5</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">IFModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
@ -187,8 +178,10 @@ foundation module does that automatically.)
<p class="endnote">The function IFModule::start appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP4_1"></a><b>&#167;4.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">4.1</span>&gt; =
<p class="endnote">The function IFModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
@ -198,17 +191,30 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4_2"></a><b>&#167;4.2. </b></p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b></p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_CONSTRUCTION_DA</span>
</pre>
<p class="inwebparagraph"><a id="SP4_3"></a><b>&#167;4.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">4.3</span>&gt; =
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
@ -219,10 +225,10 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4_4"></a><b>&#167;4.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">4.4</span>&gt; =
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
@ -236,33 +242,24 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4_5"></a><b>&#167;4.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">4.5</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. The end. </b></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>This module uses <code class="display"><span class="extract">syntax</span></code>, and adds the following annotations to the
syntax tree.
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">IFModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">action_meaning</span><span class="plain">, </span><span class="reserved">action_pattern</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_action_name</span><span class="plain">, </span><span class="reserved">action_name</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_action_pattern</span><span class="plain">, </span><span class="reserved">action_pattern</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_grammar_verb</span><span class="plain">, </span><span class="reserved">grammar_verb</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_named_action_pattern</span><span class="plain">, </span><span class="reserved">named_action_pattern</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">constant_scene</span><span class="plain">, </span><span class="reserved">scene</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function IFModule::end appears nowhere else.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -527,7 +527,7 @@ will do: it doesn't have to be "it".)
<p class="endnote">The function PL::Actions::action_names_overlap is used in <a href="#SP16">&#167;16</a>.</p>
<p class="endnote">The function PL::Actions::log is used in 1/im (<a href="1-im.html#SP4">&#167;4</a>, <a href="1-im.html#SP4_4">&#167;4.4</a>).</p>
<p class="endnote">The function PL::Actions::log is used in 1/im (<a href="1-im.html#SP3">&#167;3</a>, <a href="1-im.html#SP3_5">&#167;3.5</a>).</p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. </b>And the following matches an action name (with no substitution of noun
phrases: "unlocking the door with" won't match the unlocking action; only

View file

@ -161,7 +161,7 @@ text (e.g. "taking, dropping or examining a door").
<p class="endnote">The function PL::Actions::Lists::anl_new is used in <a href="#SP3_1">&#167;3.1</a>, <a href="#SP4_2">&#167;4.2</a>, <a href="#SP6_1">&#167;6.1</a>, <a href="#SP6_2">&#167;6.2</a>, <a href="#SP9">&#167;9</a>.</p>
<p class="endnote">The function PL::Actions::Lists::log is used in 1/im (<a href="1-im.html#SP4">&#167;4</a>, <a href="1-im.html#SP4_4">&#167;4.4</a>).</p>
<p class="endnote">The function PL::Actions::Lists::log is used in 1/im (<a href="1-im.html#SP3">&#167;3</a>, <a href="1-im.html#SP3_5">&#167;3.5</a>).</p>
<p class="endnote">The function PL::Actions::Lists::log_briefly is used in 4/ap (<a href="4-ap.html#SP5">&#167;5</a>).</p>

View file

@ -416,7 +416,7 @@ STV clauses; (2) get this right:
<p class="endnote">The function PL::Actions::Patterns::compare_specificity_of_apoc_list is used in <a href="#SP27">&#167;27</a>.</p>
<p class="endnote">The function PL::Actions::Patterns::log is used in 1/im (<a href="1-im.html#SP4">&#167;4</a>, <a href="1-im.html#SP4_4">&#167;4.4</a>).</p>
<p class="endnote">The function PL::Actions::Patterns::log is used in 1/im (<a href="1-im.html#SP3">&#167;3</a>, <a href="1-im.html#SP3_5">&#167;3.5</a>).</p>
<p class="endnote">The function PL::Actions::Patterns::ap_store is used in <a href="#SP22_1">&#167;22.1</a>, <a href="#SP23">&#167;23</a>.</p>

View file

@ -193,7 +193,7 @@ to calculate, and useful when sorting grammar lines into applicability order.
<p class="endnote">The function PL::Parsing::Lines::new is used in 5/tfg (<a href="5-tfg.html#SP21">&#167;21</a>).</p>
<p class="endnote">The function PL::Parsing::Lines::log is used in 1/im (<a href="1-im.html#SP4">&#167;4</a>, <a href="1-im.html#SP4_4">&#167;4.4</a>).</p>
<p class="endnote">The function PL::Parsing::Lines::log is used in 1/im (<a href="1-im.html#SP3">&#167;3</a>, <a href="1-im.html#SP3_5">&#167;3.5</a>).</p>
<p class="endnote">The function PL::Parsing::Lines::set_single_type is used in 5/tfg (<a href="5-tfg.html#SP21">&#167;21</a>).</p>

View file

@ -192,7 +192,7 @@ We record those as instances of the following:
<p class="endnote">The function PL::Parsing::Verbs::gv_new is used in <a href="#SP7">&#167;7</a>, <a href="#SP13">&#167;13</a>, <a href="#SP16">&#167;16</a>, <a href="#SP17">&#167;17</a>, <a href="#SP18">&#167;18</a>, <a href="#SP19">&#167;19</a>.</p>
<p class="endnote">The function PL::Parsing::Verbs::log is used in 1/im (<a href="1-im.html#SP4">&#167;4</a>, <a href="1-im.html#SP4_4">&#167;4.4</a>).</p>
<p class="endnote">The function PL::Parsing::Verbs::log is used in 1/im (<a href="1-im.html#SP3">&#167;3</a>, <a href="1-im.html#SP3_5">&#167;3.5</a>).</p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Command words. </b>Some GVs are used to represent the command grammar for imperative verbs
used by the player at run-time. Such a GV handles multiple commands, which

View file

@ -228,6 +228,25 @@ which use this module:
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>This module uses <code class="display"><span class="extract">syntax</span></code>, and adds the following annotations to the
syntax tree.
</p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">embodying_heading_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">heading</span></code>: for parse nodes of headings</span>
<span class="definitionkeyword">enum</span> <span class="constant">inclusion_of_extension_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inform_extension</span></code>: for parse nodes of headings</span>
</pre>
<pre class="display">
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">embodying_heading</span><span class="plain">, </span><span class="reserved">heading</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">embodying_heading</span><span class="plain">, </span><span class="reserved">heading</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">inclusion_of_extension</span><span class="plain">, </span><span class="reserved">inform_extension</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">inclusion_of_extension</span><span class="plain">, </span><span class="reserved">inform_extension</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 1: Setting Up.)</i></li><li><a href="1-ic.html">Continue with 'Inbuild Control'</a></li></ul><hr class="tocbar">
<!--End of weave-->

View file

@ -318,11 +318,6 @@ and cannot contain information about releasing or about virtual machines.
<pre class="display">
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">embodying_heading</span><span class="plain">, </span><span class="reserved">heading</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">embodying_heading</span><span class="plain">, </span><span class="reserved">heading</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">inclusion_of_extension</span><span class="plain">, </span><span class="reserved">inform_extension</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">inclusion_of_extension</span><span class="plain">, </span><span class="reserved">inform_extension</span><span class="plain">)</span>
<span class="reserved">heading</span><span class="plain"> *</span><span class="functiontext">Headings::from_node</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">PN</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">ParseTree::get_embodying_heading</span><span class="plain">(</span><span class="identifier">PN</span><span class="plain">);</span>
<span class="plain">}</span>

View file

@ -59,9 +59,10 @@
<!--Weave of '1/im' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">index</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>Index Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
@ -87,16 +88,18 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">IndexModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">IndexModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
@ -104,8 +107,10 @@ foundation module does that automatically.)
<p class="endnote">The function IndexModule::start appears nowhere else.</p>
<p class="endnote">The function IndexModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
@ -118,7 +123,7 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.2</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
@ -131,7 +136,7 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.3</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt; =
</code></p>
@ -143,17 +148,18 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">IndexModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function IndexModule::end appears nowhere else.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<hr class="tocbar">
<!--End of weave-->

View file

@ -59,9 +59,10 @@
<!--Weave of '1/im' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">inflections</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>Inflections Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
@ -87,8 +88,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
@ -99,12 +99,16 @@ foundation module does that automatically.)
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InflectionsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function InflectionsModule::start appears nowhere else.</p>
<p class="endnote">The function InflectionsModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
@ -165,18 +169,6 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InflectionsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function InflectionsModule::end appears nowhere else.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -59,9 +59,10 @@
<!--Weave of '1/im' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">inter</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Inter Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
@ -111,8 +112,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
@ -122,17 +122,20 @@ foundation module does that automatically.)
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.6</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.7</span>&gt;<span class="character">;</span>
<span class="functiontext">Inter::Defn::create_language</span><span class="plain">();</span>
<span class="functiontext">Inter::Types::create_all</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function InterModule::start appears nowhere else.</p>
<p class="endnote">The function InterModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b></p>
@ -215,31 +218,6 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_7"></a><b>&#167;3.7. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.7</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function InterModule::end appears nowhere else.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -59,9 +59,10 @@
<!--Weave of '1/km' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">kinds</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>Kinds Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
@ -101,17 +102,18 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">KindsModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">KindsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
@ -119,8 +121,10 @@ foundation module does that automatically.)
<p class="endnote">The function KindsModule::start appears nowhere else.</p>
<p class="endnote">The function KindsModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
@ -132,7 +136,20 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b></p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b></p>
<pre class="definitions">
@ -141,8 +158,8 @@ foundation module does that automatically.)
<span class="definitionkeyword">enum</span> <span class="constant">KIND_CREATIONS_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">MATCHING_DA</span>
</pre>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt; =
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
@ -157,21 +174,8 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
@ -183,18 +187,6 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">KindsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function KindsModule::end appears nowhere else.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -59,9 +59,10 @@
<!--Weave of '1/lm' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">linguistics</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Linguistics Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP5">&#167;5. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
@ -107,30 +108,33 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">LinguisticsModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
<span class="functiontext">Cardinals::enable_in_word_form</span><span class="plain">();</span>
<span class="functiontext">Articles::mark_for_preform</span><span class="plain">();</span>
<span class="functiontext">Prepositions::mark_for_preform</span><span class="plain">();</span>
<span class="functiontext">Diagrams::setup</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">LinguisticsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function LinguisticsModule::start appears nowhere else.</p>
<p class="endnote">The function LinguisticsModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
@ -142,7 +146,20 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b></p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b></p>
<pre class="definitions">
@ -152,8 +169,8 @@ foundation module does that automatically.)
<span class="definitionkeyword">enum</span> <span class="constant">VERB_USAGES_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">VERB_FORMS_DA</span>
</pre>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt; =
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
@ -169,8 +186,8 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt; =
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
@ -180,27 +197,54 @@ foundation module does that automatically.)
<span class="identifier">Writers::register_logger</span><span class="plain">(</span><span class="character">'p'</span><span class="plain">, </span><span class="functiontext">Prepositions::log</span><span class="plain">);</span>
<span class="identifier">Writers::register_logger</span><span class="plain">(</span><span class="character">'w'</span><span class="plain">, </span><span class="functiontext">Verbs::log_verb</span><span class="plain">);</span>
<span class="identifier">Writers::register_logger</span><span class="plain">(</span><span class="character">'y'</span><span class="plain">, </span><span class="functiontext">VerbMeanings::log</span><span class="plain">);</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>This module uses <code class="display"><span class="extract">syntax</span></code>, and adds the following annotations to the
syntax tree.
</p>
<pre class="displaydefn">
<span class="plain">;</span>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">meaning_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">excerpt_meaning</span></code>: for leaves</span>
<span class="definitionkeyword">enum</span> <span class="constant">verbal_certainty_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: certainty level if known</span>
<span class="definitionkeyword">enum</span> <span class="constant">sentence_is_existential_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: such as "there is a man"</span>
<span class="definitionkeyword">enum</span> <span class="constant">linguistic_error_here_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: one of the errors occurred here</span>
<span class="definitionkeyword">enum</span> <span class="constant">inverted_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: an inversion of subject and object has occurred</span>
<span class="definitionkeyword">enum</span> <span class="constant">possessive_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this is a non-relative use of "to have"</span>
<span class="definitionkeyword">enum</span> <span class="constant">verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_usage</span></code>: what's being done here</span>
<span class="definitionkeyword">enum</span> <span class="constant">preposition_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">preposition_identity</span></code>: which preposition, if any, qualifies it</span>
<span class="definitionkeyword">enum</span> <span class="constant">second_preposition_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">preposition_identity</span></code>: which further preposition, if any, qualifies it</span>
<span class="definitionkeyword">enum</span> <span class="constant">verb_meaning_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_meaning</span></code>: what it means</span>
<span class="definitionkeyword">enum</span> <span class="constant">nounphrase_article_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: definite or indefinite article: see below</span>
<span class="definitionkeyword">enum</span> <span class="constant">plural_reference_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: used by PROPER NOUN nodes for evident plurals</span>
<span class="definitionkeyword">enum</span> <span class="constant">gender_reference_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: used by PROPER NOUN nodes for evident genders</span>
<span class="definitionkeyword">enum</span> <span class="constant">relationship_node_type_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: what kind of inference this assertion makes</span>
<span class="definitionkeyword">enum</span> <span class="constant">implicitly_refers_to_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this will implicitly refer to something</span>
</pre>
<pre class="display">
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">meaning</span><span class="plain">, </span><span class="reserved">excerpt_meaning</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">verb</span><span class="plain">, </span><span class="reserved">verb_usage</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">preposition</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">second_preposition</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain">, </span><span class="reserved">verb_meaning</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">meaning</span><span class="plain">, </span><span class="reserved">excerpt_meaning</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">verb</span><span class="plain">, </span><span class="reserved">verb_usage</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">preposition</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">second_preposition</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain">, </span><span class="reserved">verb_meaning</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>This module requires <code class="display"><span class="extract">words</span></code>, which contains the Preform parser. When that
initialises, it calls the following routine to improve its performance.
</p>
<pre class="display">
@ -216,18 +260,6 @@ foundation module does that automatically.)
<p class="endnote">The function LinguisticsModule::preform_optimiser appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">LinguisticsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function LinguisticsModule::end appears nowhere else.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -59,7 +59,7 @@
<!--Weave of '2/em' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">linguistics</a></li><li><a href="index.html#2">Chapter 2: Excerpts</a></li><li><b>Excerpt Meanings</b></li></ul><p class="purpose">To register and deregister meanings for excerpts of text as nouns, adjectives, imperative phrases and other usages.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Excerpt meanings</a></li><li><a href="#SP4">&#167;4. Meaning codes</a></li><li><a href="#SP8">&#167;8. Creating EMs</a></li><li><a href="#SP10">&#167;10. Debugging log</a></li><li><a href="#SP11">&#167;11. Hashing excerpts</a></li><li><a href="#SP14">&#167;14. EM Listing</a></li><li><a href="#SP16">&#167;16. Registration</a></li><li><a href="#SP16_3_2">&#167;16.3.2. Meaning from assemblages</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="#SP1">&#167;1. Excerpt meanings</a></li><li><a href="#SP3">&#167;3. Meaning codes</a></li><li><a href="#SP7">&#167;7. Creating EMs</a></li><li><a href="#SP9">&#167;9. Debugging log</a></li><li><a href="#SP10">&#167;10. Hashing excerpts</a></li><li><a href="#SP13">&#167;13. EM Listing</a></li><li><a href="#SP15">&#167;15. Registration</a></li><li><a href="#SP15_3_2">&#167;15.3.2. Meaning from assemblages</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Excerpt meanings. </b>Most compilers keep a "symbols table" of identifier names and what
meanings they have: for instance, when compiling Inform, GCC's symbols
@ -143,23 +143,7 @@ generated from its token list, and a pointer to some structure.
<p class="endnote">The structure excerpt_meaning is accessed in 2/pe and here.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Annotations:
</p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">meaning_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">excerpt_meaning</span></code>: for leaves</span>
</pre>
<pre class="display">
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">meaning</span><span class="plain">, </span><span class="reserved">excerpt_meaning</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">meaning</span><span class="plain">, </span><span class="reserved">excerpt_meaning</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Meaning codes. </b>These assign a context to a meaning, and so decide how the <code class="display"><span class="extract">data</span></code> pointer for
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Meaning codes. </b>These assign a context to a meaning, and so decide how the <code class="display"><span class="extract">data</span></code> pointer for
an excerpt meaning is to interpreted. For instance, "Persian carpet" might
have a meaning with code <code class="display"><span class="extract">NOUN_MC</span></code>.
</p>
@ -172,7 +156,7 @@ representing any subset of these meaning codes; for instance, <code class="displ
</span></code>+ TABLE_MC<code class="display"><span class="extract"> might mean "either a property name or a table name".
</span></code></p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>The <code class="display"><span class="extract">meaning_code</span></code> field of an <code class="display"><span class="extract">excerpt_meaning</span></code> is always exactly
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>The <code class="display"><span class="extract">meaning_code</span></code> field of an <code class="display"><span class="extract">excerpt_meaning</span></code> is always exactly
one of the <code class="display"><span class="extract">*_MC</span></code> values. (It is never a bitmap combination.)
</p>
@ -182,7 +166,7 @@ one of the <code class="display"><span class="extract">*_MC</span></code> values
<span class="definitionkeyword">define</span> <span class="constant">NOUN_MC</span><span class="plain"> 0</span><span class="identifier">x00000002</span><span class="plain"> </span> <span class="comment">e.g., <code class="display"><span class="extract">upright chair</span></code></span>
<span class="definitionkeyword">define</span> <span class="constant">ADJECTIVE_MC</span><span class="plain"> 0</span><span class="identifier">x00000004</span><span class="plain"> </span> <span class="comment">e.g., <code class="display"><span class="extract">invisible</span></code></span>
</pre>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b>Each word in our vocabulary will be annotated with this structure:
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>Each word in our vocabulary will be annotated with this structure:
</p>
@ -205,7 +189,7 @@ one of the <code class="display"><span class="extract">*_MC</span></code> values
<p class="endnote">The structure vocabulary_meaning is accessed in 2/pe and here.</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b>With the following initialiser:
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b>With the following initialiser:
</p>
@ -229,7 +213,7 @@ one of the <code class="display"><span class="extract">*_MC</span></code> values
<p class="endnote">The function ExcerptMeanings::new_meaning appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. Creating EMs. </b>The following makes a skeletal EM structure, with no token list or hash code
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Creating EMs. </b>The following makes a skeletal EM structure, with no token list or hash code
as yet.
</p>
@ -247,9 +231,9 @@ as yet.
<p class="inwebparagraph"></p>
<p class="endnote">The function ExcerptMeanings::new is used in <a href="#SP16">&#167;16</a>, <a href="#SP16_3_2">&#167;16.3.2</a>.</p>
<p class="endnote">The function ExcerptMeanings::new is used in <a href="#SP15">&#167;15</a>, <a href="#SP15_3_2">&#167;15.3.2</a>.</p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. </b>Access routines:
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b>Access routines:
</p>
@ -263,7 +247,7 @@ as yet.
<p class="endnote">The function ExcerptMeanings::data is used in 2/pe (<a href="2-pe.html#SP5">&#167;5</a>), 3/adj (<a href="3-adj.html#SP6">&#167;6</a>), 3/nns (<a href="3-nns.html#SP9">&#167;9</a>).</p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Debugging log. </b>First to log a general bitmap made up from meaning codes:
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. Debugging log. </b>First to log a general bitmap made up from meaning codes:
</p>
@ -291,11 +275,11 @@ as yet.
<p class="inwebparagraph"></p>
<p class="endnote">The function ExcerptMeanings::log is used in 1/lm (<a href="1-lm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function ExcerptMeanings::log is used in 1/lm (<a href="1-lm.html#SP3_5">&#167;3.5</a>).</p>
<p class="endnote">The function ExcerptMeanings::log_all is used in 2/pe (<a href="2-pe.html#SP6">&#167;6</a>).</p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Hashing excerpts. </b>For excerpts <code class="display"><span class="extract">(w1, w2)</span></code>, we need a form of hash function which makes it
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Hashing excerpts. </b>For excerpts <code class="display"><span class="extract">(w1, w2)</span></code>, we need a form of hash function which makes it
easy to test whether the words in one excerpt can all be found in another,
or to be more exact whether
</p>
@ -310,7 +294,7 @@ away a lot of information. And we also want a hash function which makes it
easy to test whether an excerpt contains any of the literals.
</p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. </b>There are two sources of text which we might want to hash in this way:
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. </b>There are two sources of text which we might want to hash in this way:
first, actual excerpts found in the source text. These are not very
expensive to calculate, but every ounce of speed helps here, so we cache
the most recent.
@ -331,7 +315,7 @@ bits 31 and 32 left clear.
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">w1</span><span class="plain"> == </span><span class="identifier">cached_hash_w1</span><span class="plain">) &amp;&amp; (</span><span class="identifier">w2</span><span class="plain"> == </span><span class="identifier">cached_hash_w2</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">cached_value</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=</span><span class="identifier">w1</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">&lt;=</span><span class="identifier">w2</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="identifier">v</span><span class="plain"> = </span><span class="identifier">Lexer::word</span><span class="plain">(</span><span class="identifier">i</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">v</span><span class="plain">) </span>&lt;<span class="cwebmacro">Allow this vocabulary entry to contribute to the excerpt's hash code</span> <span class="cwebmacronumber">12.2</span>&gt;<span class="character">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">v</span><span class="plain">) </span>&lt;<span class="cwebmacro">Allow this vocabulary entry to contribute to the excerpt's hash code</span> <span class="cwebmacronumber">11.2</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">h</span><span class="plain">;</span>
<span class="plain">}</span>
@ -341,7 +325,7 @@ bits 31 and 32 left clear.
<p class="endnote">The function ExcerptMeanings::hash_code is used in 2/pe (<a href="2-pe.html#SP4">&#167;4</a>).</p>
<p class="inwebparagraph"><a id="SP12_1"></a><b>&#167;12.1. </b>Second, when a new excerpt meaning is to be registered, we want to hash
<p class="inwebparagraph"><a id="SP11_1"></a><b>&#167;11.1. </b>Second, when a new excerpt meaning is to be registered, we want to hash
code its token list. But only some of the tokens are vocabulary entries,
while others instead represent gaps where arbitrary text can appear (referred
to with a null pointer). Note that we simply ignore that gaps when hashing,
@ -375,7 +359,7 @@ same meaning as in the first case above.)
<span class="plain">}</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;no_em_tokens</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="identifier">vocabulary_entry</span><span class="plain"> *</span><span class="identifier">v</span><span class="plain"> = </span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;em_tokens</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">v</span><span class="plain">) </span>&lt;<span class="cwebmacro">Allow this vocabulary entry to contribute to the excerpt's hash code</span> <span class="cwebmacronumber">12.2</span>&gt;<span class="character">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">v</span><span class="plain">) </span>&lt;<span class="cwebmacro">Allow this vocabulary entry to contribute to the excerpt's hash code</span> <span class="cwebmacronumber">11.2</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;excerpt_hash</span><span class="plain"> = </span><span class="identifier">h</span><span class="plain">;</span>
<span class="plain">}</span>
@ -383,9 +367,9 @@ same meaning as in the first case above.)
<p class="inwebparagraph"></p>
<p class="endnote">The function ExcerptMeanings::hash_code_from_token_list is used in <a href="#SP14_1">&#167;14.1</a>.</p>
<p class="endnote">The function ExcerptMeanings::hash_code_from_token_list is used in <a href="#SP13_1">&#167;13.1</a>.</p>
<p class="inwebparagraph"><a id="SP12_2"></a><b>&#167;12.2. </b>Now each vocabulary entry <code class="display"><span class="extract">v</span></code>, i.e., each distinct word identity, itself has
<p class="inwebparagraph"><a id="SP11_2"></a><b>&#167;11.2. </b>Now each vocabulary entry <code class="display"><span class="extract">v</span></code>, i.e., each distinct word identity, itself has
a hash code to identify it. These are stored in <code class="display"><span class="extract">v-&gt;hash</span></code> and, except for
literals, are more or less evenly distributed in about the range 0 to 1000.
</p>
@ -396,7 +380,7 @@ for the whole excerpt is as follows.
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Allow this vocabulary entry to contribute to the excerpt's hash code</span> <span class="cwebmacronumber">12.2</span>&gt; =
&lt;<span class="cwebmacrodefn">Allow this vocabulary entry to contribute to the excerpt's hash code</span> <span class="cwebmacronumber">11.2</span>&gt; =
</code></p>
@ -409,9 +393,9 @@ for the whole excerpt is as follows.
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP12">&#167;12</a>, <a href="#SP12_1">&#167;12.1</a>.</p>
<p class="endnote">This code is used in <a href="#SP11">&#167;11</a>, <a href="#SP11_1">&#167;11.1</a>.</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. </b>To sum up: the excerpt hash is a bitmap indicating what categories of
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. </b>To sum up: the excerpt hash is a bitmap indicating what categories of
words are present in the excerpt. It ignores "gaps" in token lists, and
it ignores the order of the words and repetitions. The three least
significant bits indicate whether numbers, text or I6 verbatims are
@ -430,7 +414,7 @@ thought. But it is optimised for the trickiest parsing cases where the
rewards of saving unnecessary tests are greatest.
</p>
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. EM Listing. </b>We are clearly not going to store the excerpt meanings in a hash table
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. EM Listing. </b>We are clearly not going to store the excerpt meanings in a hash table
keyed by the hash values of excerpts &mdash; with hash values as large as
2^{31}-1, that would be practically impossible.
</p>
@ -491,30 +475,30 @@ resort; happily phrases both starting and ending with <code class="display"><spa
<span class="identifier">ExParser::warn_expression_cache</span><span class="plain">(); </span> <span class="comment">the existence of new meanings jeopardises any cached parsing results</span>
<span class="plain">#</span><span class="identifier">endif</span>
&lt;<span class="cwebmacro">Compute the new excerpt's hash code from its token list</span> <span class="cwebmacronumber">14.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Watermark each word in the token list with the meaning code being applied</span> <span class="cwebmacronumber">14.2</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Compute the new excerpt's hash code from its token list</span> <span class="cwebmacronumber">13.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Watermark each word in the token list with the meaning code being applied</span> <span class="cwebmacronumber">13.2</span>&gt;<span class="plain">;</span>
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">EXCERPT_MEANINGS</span><span class="plain">,</span>
<span class="string">"Logging meaning: $M with hash %08x, mc=%d, %d tokens\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
<span class="identifier">em</span><span class="plain">, </span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;excerpt_hash</span><span class="plain">, </span><span class="identifier">meaning_code</span><span class="plain">, </span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;no_em_tokens</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">meaning_code</span><span class="plain"> &amp; </span><span class="identifier">SUBSET_PARSING_BITMAP</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Place the new meaning under the subset list for each non-article word</span> <span class="cwebmacronumber">14.3</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Place the new meaning under the subset list for each non-article word</span> <span class="cwebmacronumber">13.3</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">EM_ALLOW_BLANK_TEST</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;no_em_tokens</span><span class="plain"> == 1) &amp;&amp; (</span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;em_tokens</span><span class="plain">[0] == </span><span class="identifier">NULL</span><span class="plain">) &amp;&amp;</span>
<span class="plain">(</span><span class="identifier">EM_ALLOW_BLANK_TEST</span><span class="plain">(</span><span class="identifier">meaning_code</span><span class="plain">))) {</span>
&lt;<span class="cwebmacro">Place the new meaning under the say-blank list</span> <span class="cwebmacronumber">14.4</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Place the new meaning under the say-blank list</span> <span class="cwebmacronumber">13.4</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">#</span><span class="identifier">endif</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;em_tokens</span><span class="plain">[0]) {</span>
&lt;<span class="cwebmacro">Place the new meaning under the start list of the first word</span> <span class="cwebmacronumber">14.5</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Place the new meaning under the start list of the first word</span> <span class="cwebmacronumber">13.5</span>&gt;<span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;em_tokens</span><span class="plain">[</span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;no_em_tokens</span><span class="plain">-1]) {</span>
&lt;<span class="cwebmacro">Place the new meaning under the end list of the last word</span> <span class="cwebmacronumber">14.6</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Place the new meaning under the end list of the last word</span> <span class="cwebmacronumber">13.6</span>&gt;<span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=1; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;no_em_tokens</span><span class="plain">-1; </span><span class="identifier">i</span><span class="plain">++)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;em_tokens</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]) { </span>&lt;<span class="cwebmacro">Place the new meaning under the middle list of word i</span> <span class="cwebmacronumber">14.7</span>&gt;<span class="plain">; </span><span class="reserved">break</span><span class="plain">; }</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;em_tokens</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]) { </span>&lt;<span class="cwebmacro">Place the new meaning under the middle list of word i</span> <span class="cwebmacronumber">13.7</span>&gt;<span class="plain">; </span><span class="reserved">break</span><span class="plain">; }</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain"> &gt;= </span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;no_em_tokens</span><span class="plain">-1) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"registered meaning of two or more #s"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
@ -522,14 +506,14 @@ resort; happily phrases both starting and ending with <code class="display"><spa
<p class="inwebparagraph"></p>
<p class="endnote">The function ExcerptMeanings::register_em is used in <a href="#SP16">&#167;16</a>, <a href="#SP16_3_2">&#167;16.3.2</a>.</p>
<p class="endnote">The function ExcerptMeanings::register_em is used in <a href="#SP15">&#167;15</a>, <a href="#SP15_3_2">&#167;15.3.2</a>.</p>
<p class="inwebparagraph"><a id="SP14_1"></a><b>&#167;14.1. </b>See above.
<p class="inwebparagraph"><a id="SP13_1"></a><b>&#167;13.1. </b>See above.
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Compute the new excerpt's hash code from its token list</span> <span class="cwebmacronumber">14.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Compute the new excerpt's hash code from its token list</span> <span class="cwebmacronumber">13.1</span>&gt; =
</code></p>
@ -539,9 +523,9 @@ resort; happily phrases both starting and ending with <code class="display"><spa
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP14">&#167;14</a>.</p>
<p class="endnote">This code is used in <a href="#SP13">&#167;13</a>.</p>
<p class="inwebparagraph"><a id="SP14_2"></a><b>&#167;14.2. </b>Another important optimisation is to flag each word in the meaning with
<p class="inwebparagraph"><a id="SP13_2"></a><b>&#167;13.2. </b>Another important optimisation is to flag each word in the meaning with
the given meaning code &mdash; this is why vocabulary flags and excerpt meaning
codes share the same numbering space. If we register "Table of Surgical
Instruments" as a table name, the word "surgical", for instance, picks
@ -558,7 +542,7 @@ positives.
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Watermark each word in the token list with the meaning code being applied</span> <span class="cwebmacronumber">14.2</span>&gt; =
&lt;<span class="cwebmacrodefn">Watermark each word in the token list with the meaning code being applied</span> <span class="cwebmacronumber">13.2</span>&gt; =
</code></p>
@ -571,16 +555,16 @@ positives.
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP14">&#167;14</a>.</p>
<p class="endnote">This code is used in <a href="#SP13">&#167;13</a>.</p>
<p class="inwebparagraph"><a id="SP14_3"></a><b>&#167;14.3. </b>Note that articles (a, an, the, some) are excluded: this means we don't
<p class="inwebparagraph"><a id="SP13_3"></a><b>&#167;13.3. </b>Note that articles (a, an, the, some) are excluded: this means we don't
waste time trying to see if the excerpt "the" might be a reference to the
object "Gregory the Great".
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Place the new meaning under the subset list for each non-article word</span> <span class="cwebmacronumber">14.3</span>&gt; =
&lt;<span class="cwebmacrodefn">Place the new meaning under the subset list for each non-article word</span> <span class="cwebmacronumber">13.3</span>&gt; =
</code></p>
@ -602,15 +586,15 @@ object "Gregory the Great".
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP14">&#167;14</a>.</p>
<p class="endnote">This code is used in <a href="#SP13">&#167;13</a>.</p>
<p class="inwebparagraph"><a id="SP14_4"></a><b>&#167;14.4. </b>To register <code class="display"><span class="extract">#</span></code>, which is what "To say (N - a number)" and similar
<p class="inwebparagraph"><a id="SP13_4"></a><b>&#167;13.4. </b>To register <code class="display"><span class="extract">#</span></code>, which is what "To say (N - a number)" and similar
constructions translate to.
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Place the new meaning under the say-blank list</span> <span class="cwebmacronumber">14.4</span>&gt; =
&lt;<span class="cwebmacrodefn">Place the new meaning under the say-blank list</span> <span class="cwebmacronumber">13.4</span>&gt; =
</code></p>
@ -628,10 +612,10 @@ constructions translate to.
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP14">&#167;14</a>.</p>
<p class="endnote">This code is used in <a href="#SP13">&#167;13</a>.</p>
<p class="inwebparagraph"><a id="SP14_5"></a><b>&#167;14.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Place the new meaning under the start list of the first word</span> <span class="cwebmacronumber">14.5</span>&gt; =
<p class="inwebparagraph"><a id="SP13_5"></a><b>&#167;13.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Place the new meaning under the start list of the first word</span> <span class="cwebmacronumber">13.5</span>&gt; =
</code></p>
@ -643,14 +627,14 @@ constructions translate to.
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP14">&#167;14</a>.</p>
<p class="endnote">This code is used in <a href="#SP13">&#167;13</a>.</p>
<p class="inwebparagraph"><a id="SP14_6"></a><b>&#167;14.6. </b>...and similarly...
<p class="inwebparagraph"><a id="SP13_6"></a><b>&#167;13.6. </b>...and similarly...
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Place the new meaning under the end list of the last word</span> <span class="cwebmacronumber">14.6</span>&gt; =
&lt;<span class="cwebmacrodefn">Place the new meaning under the end list of the last word</span> <span class="cwebmacronumber">13.6</span>&gt; =
</code></p>
@ -662,14 +646,14 @@ constructions translate to.
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP14">&#167;14</a>.</p>
<p class="endnote">This code is used in <a href="#SP13">&#167;13</a>.</p>
<p class="inwebparagraph"><a id="SP14_7"></a><b>&#167;14.7. </b>...and similarly again:
<p class="inwebparagraph"><a id="SP13_7"></a><b>&#167;13.7. </b>...and similarly again:
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Place the new meaning under the middle list of word i</span> <span class="cwebmacronumber">14.7</span>&gt; =
&lt;<span class="cwebmacrodefn">Place the new meaning under the middle list of word i</span> <span class="cwebmacronumber">13.7</span>&gt; =
</code></p>
@ -681,9 +665,9 @@ constructions translate to.
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP14">&#167;14</a>.</p>
<p class="endnote">This code is used in <a href="#SP13">&#167;13</a>.</p>
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. </b>Parse nodes are only created from excerpt meanings for storage inside the
<p class="inwebparagraph"><a id="SP14"></a><b>&#167;14. </b>Parse nodes are only created from excerpt meanings for storage inside the
excerpt parser, so these never live on into trees.
</p>
@ -698,9 +682,9 @@ excerpt parser, so these never live on into trees.
<p class="inwebparagraph"></p>
<p class="endnote">The function ExcerptMeanings::new_em_pnode is used in <a href="#SP14_3">&#167;14.3</a>, <a href="#SP14_4">&#167;14.4</a>, <a href="#SP14_5">&#167;14.5</a>, <a href="#SP14_6">&#167;14.6</a>, <a href="#SP14_7">&#167;14.7</a>.</p>
<p class="endnote">The function ExcerptMeanings::new_em_pnode is used in <a href="#SP13_3">&#167;13.3</a>, <a href="#SP13_4">&#167;13.4</a>, <a href="#SP13_5">&#167;13.5</a>, <a href="#SP13_6">&#167;13.6</a>, <a href="#SP13_7">&#167;13.7</a>.</p>
<p class="inwebparagraph"><a id="SP16"></a><b>&#167;16. Registration. </b>The following is the main routine used throughout Inform to register new
<p class="inwebparagraph"><a id="SP15"></a><b>&#167;15. Registration. </b>The following is the main routine used throughout Inform to register new
meanings.
</p>
@ -721,14 +705,14 @@ meanings.
<span class="reserved">excerpt_meaning</span><span class="plain"> *</span><span class="identifier">em</span><span class="plain"> = </span><span class="functiontext">ExcerptMeanings::new</span><span class="plain">(</span><span class="identifier">meaning_code</span><span class="plain">, </span><span class="identifier">data</span><span class="plain">);</span>
&lt;<span class="cwebmacro">Unless this is parametrised, skip any initial article</span> <span class="cwebmacronumber">16.1</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Unless this is parametrised, skip any initial article</span> <span class="cwebmacronumber">15.1</span>&gt;<span class="plain">;</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">EM_CASE_SENSITIVITY_TEST</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">EM_CASE_SENSITIVITY_TEST</span><span class="plain">(</span><span class="identifier">meaning_code</span><span class="plain">))</span>
&lt;<span class="cwebmacro">Detect use of upper case on the first word of this new text substitution</span> <span class="cwebmacronumber">16.2</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Detect use of upper case on the first word of this new text substitution</span> <span class="cwebmacronumber">15.2</span>&gt;<span class="plain">;</span>
<span class="plain">#</span><span class="identifier">endif</span>
&lt;<span class="cwebmacro">Build the token list for the new EM</span> <span class="cwebmacronumber">16.3</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Build the token list for the new EM</span> <span class="cwebmacronumber">15.3</span>&gt;<span class="plain">;</span>
<span class="functiontext">ExcerptMeanings::register_em</span><span class="plain">(</span><span class="identifier">meaning_code</span><span class="plain">, </span><span class="identifier">em</span><span class="plain">);</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
@ -744,14 +728,14 @@ meanings.
<p class="endnote">The function ExcerptMeanings::register is used in 3/adj (<a href="3-adj.html#SP4">&#167;4</a>), 3/nns (<a href="3-nns.html#SP4">&#167;4</a>).</p>
<p class="inwebparagraph"><a id="SP16_1"></a><b>&#167;16.1. </b>Articles are preserved at the front of phrase definitions, mainly because
<p class="inwebparagraph"><a id="SP15_1"></a><b>&#167;15.1. </b>Articles are preserved at the front of phrase definitions, mainly because
text substitutions need to distinguish (for instance) "say [the X]" from
"say [an X]".
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Unless this is parametrised, skip any initial article</span> <span class="cwebmacronumber">16.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Unless this is parametrised, skip any initial article</span> <span class="cwebmacronumber">15.1</span>&gt; =
</code></p>
@ -766,9 +750,9 @@ text substitutions need to distinguish (for instance) "say [the X]" from
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP16">&#167;16</a>.</p>
<p class="endnote">This code is used in <a href="#SP15">&#167;15</a>.</p>
<p class="inwebparagraph"><a id="SP16_2"></a><b>&#167;16.2. </b>Because an open bracket fails <code class="display"><span class="extract">isupper</span></code>, the following looks at the first
<p class="inwebparagraph"><a id="SP15_2"></a><b>&#167;15.2. </b>Because an open bracket fails <code class="display"><span class="extract">isupper</span></code>, the following looks at the first
letter of the first word only if it's not a blank. If it finds upper case, as
it would when reading the "T" in:
</p>
@ -795,7 +779,7 @@ sensitivity.)
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Detect use of upper case on the first word of this new text substitution</span> <span class="cwebmacronumber">16.2</span>&gt; =
&lt;<span class="cwebmacrodefn">Detect use of upper case on the first word of this new text substitution</span> <span class="cwebmacronumber">15.2</span>&gt; =
</code></p>
@ -813,9 +797,9 @@ sensitivity.)
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP16">&#167;16</a>.</p>
<p class="endnote">This code is used in <a href="#SP15">&#167;15</a>.</p>
<p class="inwebparagraph"><a id="SP16_3"></a><b>&#167;16.3. </b>We read the text in something like:
<p class="inwebparagraph"><a id="SP15_3"></a><b>&#167;15.3. </b>We read the text in something like:
</p>
<blockquote>
@ -839,7 +823,7 @@ tokens denoting gaps, to result in something like:
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Build the token list for the new EM</span> <span class="cwebmacronumber">16.3</span>&gt; =
&lt;<span class="cwebmacrodefn">Build the token list for the new EM</span> <span class="cwebmacronumber">15.3</span>&gt; =
</code></p>
@ -847,12 +831,12 @@ tokens denoting gaps, to result in something like:
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tc</span><span class="plain"> = 0;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"> &lt; </span><span class="identifier">Wordings::length</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tc</span><span class="plain"> &gt;= </span><span class="constant">MAX_TOKENS_PER_EXCERPT_MEANING</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Complain of excessive length of the new excerpt</span> <span class="cwebmacronumber">16.3.3</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Complain of excessive length of the new excerpt</span> <span class="cwebmacronumber">15.3.3</span>&gt;<span class="plain">;</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">compare_word</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">) + </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">OPENBRACKET_V</span><span class="plain">)) {</span>
<span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;em_tokens</span><span class="plain">[</span><span class="identifier">tc</span><span class="plain">++] = </span><span class="identifier">NULL</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Skip over bracketed token description</span> <span class="cwebmacronumber">16.3.1</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Skip over bracketed token description</span> <span class="cwebmacronumber">15.3.1</span>&gt;<span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;em_tokens</span><span class="plain">[</span><span class="identifier">tc</span><span class="plain">++] = </span><span class="identifier">Lexer::word</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">) + </span><span class="identifier">i</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;no_em_tokens</span><span class="plain"> = </span><span class="identifier">tc</span><span class="plain">;</span>
@ -860,15 +844,15 @@ tokens denoting gaps, to result in something like:
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP16">&#167;16</a>.</p>
<p class="endnote">This code is used in <a href="#SP15">&#167;15</a>.</p>
<p class="inwebparagraph"><a id="SP16_3_1"></a><b>&#167;16.3.1. </b>This is all a little defensive, but syntax bugs higher up tend to find
<p class="inwebparagraph"><a id="SP15_3_1"></a><b>&#167;15.3.1. </b>This is all a little defensive, but syntax bugs higher up tend to find
their way down to this plughole:
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Skip over bracketed token description</span> <span class="cwebmacronumber">16.3.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Skip over bracketed token description</span> <span class="cwebmacronumber">15.3.1</span>&gt; =
</code></p>
@ -892,9 +876,9 @@ their way down to this plughole:
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP16_3">&#167;16.3</a>.</p>
<p class="endnote">This code is used in <a href="#SP15_3">&#167;15.3</a>.</p>
<p class="inwebparagraph"><a id="SP16_3_2"></a><b>&#167;16.3.2. Meaning from assemblages. </b>In a few cases it is convenient to register a meaning from a wording which
<p class="inwebparagraph"><a id="SP15_3_2"></a><b>&#167;15.3.2. Meaning from assemblages. </b>In a few cases it is convenient to register a meaning from a wording which
isn't contiguously present in the lexer, so we also provide a method for
taking it from a word assemblage.
</p>
@ -915,7 +899,7 @@ token lists with gaps in.
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">tc</span><span class="plain"> = 0;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">len</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tc</span><span class="plain"> &gt;= </span><span class="constant">MAX_TOKENS_PER_EXCERPT_MEANING</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Complain of excessive length of the new excerpt</span> <span class="cwebmacronumber">16.3.3</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Complain of excessive length of the new excerpt</span> <span class="cwebmacronumber">15.3.3</span>&gt;<span class="plain">;</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">em</span><span class="plain">-</span><span class="element">&gt;em_tokens</span><span class="plain">[</span><span class="identifier">tc</span><span class="plain">++] = </span><span class="identifier">array</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
@ -931,7 +915,7 @@ token lists with gaps in.
<p class="endnote">The function ExcerptMeanings::register_assemblage appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP16_3_3"></a><b>&#167;16.3.3. </b>In practice, nobody ever hits this message except deliberately. It has
<p class="inwebparagraph"><a id="SP15_3_3"></a><b>&#167;15.3.3. </b>In practice, nobody ever hits this message except deliberately. It has
a tendency to fire twice or more on the same source text because of
registering multiple inflected forms of the same text; but it's not worth
going to any trouble to prevent this.
@ -939,7 +923,7 @@ going to any trouble to prevent this.
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Complain of excessive length of the new excerpt</span> <span class="cwebmacronumber">16.3.3</span>&gt; =
&lt;<span class="cwebmacrodefn">Complain of excessive length of the new excerpt</span> <span class="cwebmacronumber">15.3.3</span>&gt; =
</code></p>
@ -949,7 +933,7 @@ going to any trouble to prevent this.
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP16_3">&#167;16.3</a>, <a href="#SP16_3_2">&#167;16.3.2</a>.</p>
<p class="endnote">This code is used in <a href="#SP15_3">&#167;15.3</a>, <a href="#SP15_3_2">&#167;15.3.2</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 2: Excerpts.)</i></li><li><a href="2-pe.html">Continue with 'Parse Excerpts'</a></li></ul><hr class="tocbar">

View file

@ -153,11 +153,11 @@ numbers.
<p class="inwebparagraph"></p>
<p class="endnote">The function Cardinals::preform_optimiser is used in 1/lm (<a href="1-lm.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Cardinals::preform_optimiser is used in 1/lm (<a href="1-lm.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Cardinals::mark_as_cardinal is used in 2/em (<a href="2-em.html#SP7">&#167;7</a>).</p>
<p class="endnote">The function Cardinals::mark_as_cardinal is used in 2/em (<a href="2-em.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Cardinals::mark_as_ordinal is used in 2/em (<a href="2-em.html#SP7">&#167;7</a>).</p>
<p class="endnote">The function Cardinals::mark_as_ordinal is used in 2/em (<a href="2-em.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Cardinals::enable_in_word_form is used in 1/lm (<a href="1-lm.html#SP3">&#167;3</a>).</p>

View file

@ -728,7 +728,7 @@ referring to them. There are four broad families which we take in turn.
<p class="inwebparagraph"></p>
<p class="endnote">The function Quantifiers::make_built_in is used in 1/lm (<a href="1-lm.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Quantifiers::make_built_in is used in 1/lm (<a href="1-lm.html#SP5">&#167;5</a>).</p>
<p class="inwebparagraph"><a id="SP18_1"></a><b>&#167;18.1. </b>As discussed above, the two traditional quantifiers in logic are "for
all" and "there exists", usually written in mathematical notation as

View file

@ -202,7 +202,7 @@ time".
<p class="endnote">The function Occurrence::store appears nowhere else.</p>
<p class="endnote">The function Occurrence::log is used in 1/lm (<a href="1-lm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function Occurrence::log is used in 1/lm (<a href="1-lm.html#SP3_5">&#167;3.5</a>).</p>
<p class="endnote">The function Occurrence::is_valid appears nowhere else.</p>

View file

@ -124,7 +124,7 @@ will vary depending on the verb it's coupled with.
<p class="inwebparagraph"></p>
<p class="endnote">The function Prepositions::log is used in 1/lm (<a href="1-lm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function Prepositions::log is used in 1/lm (<a href="1-lm.html#SP3_5">&#167;3.5</a>).</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Creation. </b>Prepositions are completely determined by their wording: the "for" attached
to one verb is the same preposition as the "for" attached to another one.
@ -295,7 +295,7 @@ with a given "permitted verb".
<p class="endnote">The function Prepositions::mark_for_preform is used in 1/lm (<a href="1-lm.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Prepositions::preform_optimiser is used in 1/lm (<a href="1-lm.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Prepositions::preform_optimiser is used in 1/lm (<a href="1-lm.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Prepositions::mark_as_preposition is used in <a href="#SP5">&#167;5</a>.</p>

View file

@ -149,7 +149,7 @@ instead of a word: for example, the <code class="display"><span class="extract">
<p class="endnote">The function Verbs::new_verb is used in <a href="#SP6">&#167;6</a>.</p>
<p class="endnote">The function Verbs::log_verb is used in 1/lm (<a href="1-lm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function Verbs::log_verb is used in 1/lm (<a href="1-lm.html#SP3_5">&#167;3.5</a>).</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Package. </b></p>

View file

@ -895,7 +895,7 @@ or "the verb to be able to see" use these.
<p class="endnote">The function VerbUsages::mark_as_verb is used in <a href="#SP6">&#167;6</a>.</p>
<p class="endnote">The function VerbUsages::preform_optimiser is used in 1/lm (<a href="1-lm.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function VerbUsages::preform_optimiser is used in 1/lm (<a href="1-lm.html#SP5">&#167;5</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="4-vrb.html">Back to 'Verbs'</a></li><li><a href="4-prp.html">Continue with 'Prepositions'</a></li></ul><hr class="tocbar">

View file

@ -80,41 +80,8 @@
<span class="definitionkeyword">enum</span> <span class="constant">KIND_NT</span><span class="plain"> </span> <span class="comment">"A woman is a kind of person"</span>
<span class="definitionkeyword">enum</span> <span class="constant">PROPERTY_LIST_NT</span><span class="plain"> </span> <span class="comment">"capacity 2"</span>
<span class="definitionkeyword">enum</span> <span class="constant">verbal_certainty_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: certainty level if known</span>
<span class="definitionkeyword">enum</span> <span class="constant">sentence_is_existential_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: such as "there is a man"</span>
<span class="definitionkeyword">enum</span> <span class="constant">linguistic_error_here_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: one of the errors occurred here</span>
<span class="definitionkeyword">enum</span> <span class="constant">inverted_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: an inversion of subject and object has occurred</span>
<span class="definitionkeyword">enum</span> <span class="constant">possessive_verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this is a non-relative use of "to have"</span>
<span class="definitionkeyword">enum</span> <span class="constant">verb_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_usage</span></code>: what's being done here</span>
<span class="definitionkeyword">enum</span> <span class="constant">preposition_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">preposition_identity</span></code>: which preposition, if any, qualifies it</span>
<span class="definitionkeyword">enum</span> <span class="constant">second_preposition_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">preposition_identity</span></code>: which further preposition, if any, qualifies it</span>
<span class="definitionkeyword">enum</span> <span class="constant">verb_meaning_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">verb_meaning</span></code>: what it means</span>
<span class="definitionkeyword">enum</span> <span class="constant">nounphrase_article_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: definite or indefinite article: see below</span>
<span class="definitionkeyword">enum</span> <span class="constant">plural_reference_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: used by PROPER NOUN nodes for evident plurals</span>
<span class="definitionkeyword">enum</span> <span class="constant">gender_reference_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: used by PROPER NOUN nodes for evident genders</span>
<span class="definitionkeyword">enum</span> <span class="constant">relationship_node_type_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: what kind of inference this assertion makes</span>
<span class="definitionkeyword">enum</span> <span class="constant">implicitly_refers_to_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this will implicitly refer to something</span>
<span class="definitionkeyword">define</span> <span class="constant">ASSERT_NFLAG</span><span class="plain"> 0</span><span class="identifier">x00000008</span><span class="plain"> </span> <span class="comment">allow this on either side of an assertion?</span>
<span class="definitionkeyword">enum</span> <span class="constant">TwoLikelihoods_LINERROR</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">verb</span><span class="plain">, </span><span class="reserved">verb_usage</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">preposition</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">second_preposition</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain">)</span>
<span class="identifier">DECLARE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain">, </span><span class="reserved">verb_meaning</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="display">
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">verb</span><span class="plain">, </span><span class="reserved">verb_usage</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">preposition</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="identifier">second_preposition</span><span class="plain">, </span><span class="reserved">preposition_identity</span><span class="plain">)</span>
<span class="identifier">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain">(</span><span class="reserved">verb_meaning</span><span class="plain">, </span><span class="reserved">verb_meaning</span><span class="plain">)</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Diagrams::setup</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">ParseTree::md</span><span class="plain">((</span><span class="identifier">parse_tree_node_type</span><span class="plain">) { </span><span class="constant">AVERB_NT</span><span class="plain">, </span><span class="string">"AVERB_NT"</span><span class="plain">, 0, 0, </span><span class="constant">L3_NCAT</span><span class="plain">, 0 });</span>
<span class="identifier">ParseTree::md</span><span class="plain">((</span><span class="identifier">parse_tree_node_type</span><span class="plain">) { </span><span class="constant">RELATIONSHIP_NT</span><span class="plain">, </span><span class="string">"RELATIONSHIP_NT"</span><span class="plain">, 0, 2, </span><span class="constant">L3_NCAT</span><span class="plain">, </span><span class="constant">ASSERT_NFLAG</span><span class="plain"> });</span>
@ -146,7 +113,7 @@
<p class="endnote">The function Diagrams::setup is used in 1/lm (<a href="1-lm.html#SP3">&#167;3</a>).</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="display">

View file

@ -280,7 +280,7 @@ has been specified.
<p class="endnote">The function VerbMeanings::set_where_assigned is used in 4/vrb (<a href="4-vrb.html#SP12">&#167;12</a>).</p>
<p class="endnote">The function VerbMeanings::log is used in 1/lm (<a href="1-lm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function VerbMeanings::log is used in 1/lm (<a href="1-lm.html#SP3_5">&#167;3.5</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="5-dgr.html">Back to 'Diagrams'</a></li><li><a href="5-np.html">Continue with 'Noun Phrases'</a></li></ul><hr class="tocbar">

View file

@ -59,9 +59,10 @@
<!--Weave of '1/mm' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">multimedia</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>Multimedia Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
@ -85,17 +86,18 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">MultimediaModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">MultimediaModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
@ -103,8 +105,10 @@ foundation module does that automatically.)
<p class="endnote">The function MultimediaModule::start appears nowhere else.</p>
<p class="endnote">The function MultimediaModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
@ -117,7 +121,7 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.2</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
@ -130,7 +134,7 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.3</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt; =
</code></p>
@ -143,7 +147,7 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.4</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
@ -155,18 +159,6 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">MultimediaModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function MultimediaModule::end appears nowhere else.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -59,15 +59,92 @@
<!--Weave of '1/pm' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">problems</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>Problems Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP2">&#167;2. Annotations</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">PROBLEMS_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Annotations. </b></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProblemsModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">2.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">2.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">2.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">2.4</span>&gt;<span class="character">;</span>
<span class="identifier">ParseTree::allow_annotation_to_category</span><span class="plain">(</span><span class="identifier">L2_NCAT</span><span class="plain">, </span><span class="constant">problem_falls_under_ANNOT</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProblemsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function ProblemsModule::start appears nowhere else.</p>
<p class="endnote">The function ProblemsModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP2_1"></a><b>&#167;2.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">2.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_2"></a><b>&#167;2.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">2.2</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_3"></a><b>&#167;2.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">2.3</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_4"></a><b>&#167;2.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">2.4</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>This module uses <code class="display"><span class="extract">syntax</span></code>, and adds the following annotations to the
syntax tree.
</p>
<pre class="definitions">
@ -81,89 +158,6 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProblemsModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
<span class="identifier">ParseTree::allow_annotation_to_category</span><span class="plain">(</span><span class="identifier">L2_NCAT</span><span class="plain">, </span><span class="constant">problem_falls_under_ANNOT</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function ProblemsModule::start appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.3</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProblemsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function ProblemsModule::end appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 1: Starting Up.)</i></li><li><a href="1-tlm.html">Continue with 'Telemetry'</a></li></ul><hr class="tocbar">
<!--End of weave-->

View file

@ -59,9 +59,10 @@
<!--Weave of '1/sm' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">syntax</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Syntax Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
@ -85,27 +86,30 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">SyntaxModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
<span class="functiontext">ParseTree::metadata_setup</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">SyntaxModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function SyntaxModule::start appears nowhere else.</p>
<p class="endnote">The function SyntaxModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
@ -117,14 +121,27 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b></p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b></p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">VERIFICATIONS_DA</span>
</pre>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt; =
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
@ -136,8 +153,8 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt; =
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
@ -152,31 +169,6 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">SyntaxModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function SyntaxModule::end appears nowhere else.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -314,8 +314,6 @@ store annotations in the following:
<span class="definitionkeyword">enum</span> <span class="constant">language_element_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">int</span></code>: this node is not really a sentence, but a language definition Use</span>
<span class="definitionkeyword">enum</span> <span class="constant">sentence_unparsed_ANNOT</span><span class="plain"> </span> <span class="comment">int: set if verbs haven't been sought yet here</span>
<span class="definitionkeyword">enum</span> <span class="constant">suppress_heading_dependencies_ANNOT</span><span class="plain"> </span> <span class="comment">int: ignore extension dependencies on this heading node</span>
<span class="definitionkeyword">enum</span> <span class="constant">embodying_heading_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">heading</span></code>: for parse nodes of headings</span>
<span class="definitionkeyword">enum</span> <span class="constant">inclusion_of_extension_ANNOT</span><span class="plain"> </span> <span class="comment"><code class="display"><span class="extract">inform_extension</span></code>: for parse nodes of headings</span>
<span class="definitionkeyword">enum</span> <span class="constant">implied_heading_ANNOT</span><span class="plain"> </span> <span class="comment">int: set only for the heading of implied inclusions</span>
<span class="definitionkeyword">define</span> <span class="constant">MAX_ANNOT_NUMBER</span><span class="plain"> (</span><span class="identifier">NO_DEFINED_ANNOT_VALUES</span><span class="plain">+1)</span>
</pre>
@ -528,7 +526,7 @@ never be used.
<p class="inwebparagraph"></p>
<p class="endnote">The function ParseTree::log_type is used in <a href="#SP47">&#167;47</a>, 1/sm (<a href="1-sm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function ParseTree::log_type is used in <a href="#SP47">&#167;47</a>, 1/sm (<a href="1-sm.html#SP3_5">&#167;3.5</a>).</p>
<p class="endnote">The function ParseTree::get_type_name appears nowhere else.</p>
@ -1185,9 +1183,9 @@ logging is a diagnostic tool, we want it to work even when Inform is sick.
<p class="inwebparagraph"></p>
<p class="endnote">The function ParseTree::log_tree is used in <a href="#SP49">&#167;49</a>, 1/sm (<a href="1-sm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function ParseTree::log_tree is used in <a href="#SP49">&#167;49</a>, 1/sm (<a href="1-sm.html#SP3_5">&#167;3.5</a>).</p>
<p class="endnote">The function ParseTree::log_subtree is used in 1/sm (<a href="1-sm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function ParseTree::log_subtree is used in 1/sm (<a href="1-sm.html#SP3_5">&#167;3.5</a>).</p>
<p class="inwebparagraph"><a id="SP46"></a><b>&#167;46. </b>Either way, we recurse as follows, being careful not to make recursive calls
to pursue <code class="display"><span class="extract">next</span></code> links, since otherwise a source text with more than 100,000
@ -1281,7 +1279,7 @@ text in the debugging log.
<p class="inwebparagraph"></p>
<p class="endnote">The function ParseTree::log_node is used in 1/sm (<a href="1-sm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function ParseTree::log_node is used in 1/sm (<a href="1-sm.html#SP3_5">&#167;3.5</a>).</p>
<p class="inwebparagraph"><a id="SP48"></a><b>&#167;48. </b>This is occasionally useful:
</p>

View file

@ -59,14 +59,14 @@
<!--Weave of '1/wm' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">words</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Words Module</b></li></ul><p class="purpose">Setting up the use of this module.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Introduction</a></li><li><a href="#SP3">&#167;3. The beginning</a></li><li><a href="#SP4">&#167;4. The end</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <code class="display"><span class="extract">foundation</span></code>, and
contains no code of interest. The following constant exists only in tools
which use this module:
</p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">WORDS_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
<span class="definitionkeyword">define</span> <span class="constant">WORDING_LOGS_ALLOWED</span>
</pre>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>To begin with, this module needs to allocate memory:
</p>
@ -94,8 +94,7 @@
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. The beginning. </b>(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Like all modules, this one must define a <code class="display"><span class="extract">start</span></code> and <code class="display"><span class="extract">end</span></code> function:
</p>
@ -103,22 +102,39 @@ foundation module does that automatically.)
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">WordsModule::start</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">Memory::reason_name</span><span class="plain">(</span><span class="constant">LEXER_TEXT_MREASON</span><span class="plain">, </span><span class="string">"source text"</span><span class="plain">);</span>
<span class="identifier">Memory::reason_name</span><span class="plain">(</span><span class="constant">LEXER_WORDS_MREASON</span><span class="plain">, </span><span class="string">"source text details"</span><span class="plain">);</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt;<span class="character">;</span>
&lt;<span class="cwebmacro">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
<span class="functiontext">Lexer::start</span><span class="plain">();</span>
<span class="functiontext">Vocabulary::create_punctuation</span><span class="plain">();</span>
<span class="functiontext">Preform::begin</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">WordsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function WordsModule::start appears nowhere else.</p>
<p class="endnote">The function WordsModule::end appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
&lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
@ -133,15 +149,15 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b></p>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b></p>
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">LEXICAL_OUTPUT_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">VOCABULARY_DA</span>
</pre>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.3</span>&gt; =
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p>
@ -154,8 +170,8 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_4"></a><b>&#167;3.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.4</span>&gt; =
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
@ -168,31 +184,6 @@ foundation module does that automatically.)
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_5"></a><b>&#167;3.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. The end. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">WordsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function WordsModule::end appears nowhere else.</p>
<hr class="tocbar">
<!--End of weave-->
</main>

View file

@ -259,7 +259,7 @@ creator, and a debugging logger:
<p class="endnote">The function Vocabulary::vocab_entry_new is used in <a href="#SP10">&#167;10</a>, <a href="#SP16_1">&#167;16.1</a>, <a href="#SP16_2">&#167;16.2</a>.</p>
<p class="endnote">The function Vocabulary::log is used in 1/wm (<a href="1-wm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function Vocabulary::log is used in 1/wm (<a href="1-wm.html#SP3_5">&#167;3.5</a>).</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b>It's perhaps unexpected that a vocabulary entry not only stores a (pointer
to) a copy of the text, the "exemplar" (since it is text which is an
@ -320,7 +320,7 @@ structure:
<p class="endnote">The function Vocabulary::get_exemplar is used in 4/prf (<a href="4-prf.html#SP30">&#167;30</a>).</p>
<p class="endnote">The function Vocabulary::writer is used in 1/wm (<a href="1-wm.html#SP3_1">&#167;3.1</a>).</p>
<p class="endnote">The function Vocabulary::writer is used in 1/wm (<a href="1-wm.html#SP3_2">&#167;3.2</a>).</p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. </b>An integer is stored at each vocabulary entry, recording its value
if it every turns out to parse as a literal number:

View file

@ -260,7 +260,7 @@ frequently, since it consumes memory:
<p class="endnote">The function WordAssemblages::nonempty appears nowhere else.</p>
<p class="endnote">The function WordAssemblages::writer is used in 1/wm (<a href="1-wm.html#SP3_1">&#167;3.1</a>).</p>
<p class="endnote">The function WordAssemblages::writer is used in 1/wm (<a href="1-wm.html#SP3_2">&#167;3.2</a>).</p>
<p class="endnote">The function WordAssemblages::hyphenated appears nowhere else.</p>
@ -405,7 +405,7 @@ frequently, since it consumes memory:
<p class="inwebparagraph"></p>
<p class="endnote">The function WordAssemblages::log is used in 1/wm (<a href="1-wm.html#SP3_4">&#167;3.4</a>).</p>
<p class="endnote">The function WordAssemblages::log is used in 1/wm (<a href="1-wm.html#SP3_5">&#167;3.5</a>).</p>
<p class="endnote">The function WordAssemblages::index appears nowhere else.</p>

View file

@ -657,7 +657,7 @@ distinguished. We'll do this with the letters <code class="display"><span class=
<p class="endnote">The function Lexer::word_copy is used in <a href="#SP28">&#167;28</a>.</p>
<p class="endnote">The function Lexer::writer is used in 1/wm (<a href="1-wm.html#SP3_1">&#167;3.1</a>).</p>
<p class="endnote">The function Lexer::writer is used in 1/wm (<a href="1-wm.html#SP3_2">&#167;3.2</a>).</p>
<p class="inwebparagraph"><a id="SP19"></a><b>&#167;19. Definition of white space. </b>The following macro (to save time over a function call) is highly dangerous,
and of the kind which all books on C counsel against. If it were called with

View file

@ -568,7 +568,7 @@ and we return <code class="display"><span class="extract">w2</span></code>.
<p class="inwebparagraph"></p>
<p class="endnote">The function Wordings::writer is used in 1/wm (<a href="1-wm.html#SP3_1">&#167;3.1</a>).</p>
<p class="endnote">The function Wordings::writer is used in 1/wm (<a href="1-wm.html#SP3_2">&#167;3.2</a>).</p>
<p class="inwebparagraph"><a id="SP22_1"></a><b>&#167;22.1. </b>Note that the empty wording causes nothing to be written to the stream.
</p>

View file

@ -2,7 +2,9 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d ARCH_MODULE TRUE
@ -17,7 +19,7 @@ ALLOCATE_INDIVIDUALLY(inter_architecture)
ALLOCATE_INDIVIDUALLY(target_vm)
ALLOCATE_INDIVIDUALLY(compatibility_specification)
@h The beginning.
@ Like all modules, this one must define a |start| and |end| function:
=
void ArchModule::start(void) {
@ -25,12 +27,11 @@ void ArchModule::start(void) {
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
Architectures::create();
TargetVMs::create();
}
@
void ArchModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@ -38,19 +39,8 @@ void ArchModule::start(void) {
@<Register this module's stream writers@> =
;
@
@<Register this module's debugging log aspects@> =
;
@<Register this module's debugging log writers@> =
;
@<Register this module's command line switches@> =
;
@h The end.
=
void ArchModule::end(void) {
}

View file

@ -1,26 +1,27 @@
[HTMLModule::] Index Module.
[HTMLModule::] HTML Module.
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d HTML_MODULE TRUE
@ To begin with, this module needs to allocate memory:
=
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void HTMLModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
}
void HTMLModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> =
;
@ -30,12 +31,3 @@ void HTMLModule::start(void) {
@<Register this module's debugging log writers@> =
;
@<Register this module's command line switches@> =
;
@h The end.
=
void HTMLModule::end(void) {
}

View file

@ -108,3 +108,15 @@ void InbuildModule::end(void) {
@<Register this module's debugging log writers@> =
;
@ This module uses |syntax|, and adds the following annotations to the
syntax tree.
@e embodying_heading_ANNOT /* |heading|: for parse nodes of headings */
@e inclusion_of_extension_ANNOT /* |inform_extension|: for parse nodes of headings */
=
DECLARE_ANNOTATION_FUNCTIONS(embodying_heading, heading)
MAKE_ANNOTATION_FUNCTIONS(embodying_heading, heading)
DECLARE_ANNOTATION_FUNCTIONS(inclusion_of_extension, inform_extension)
MAKE_ANNOTATION_FUNCTIONS(inclusion_of_extension, inform_extension)

View file

@ -185,11 +185,6 @@ int last_indentation_above_level[NO_HEADING_LEVELS], lial_made = FALSE;
inbuild_work *work_identified = NULL;
@ =
DECLARE_ANNOTATION_FUNCTIONS(embodying_heading, heading)
MAKE_ANNOTATION_FUNCTIONS(embodying_heading, heading)
DECLARE_ANNOTATION_FUNCTIONS(inclusion_of_extension, inform_extension)
MAKE_ANNOTATION_FUNCTIONS(inclusion_of_extension, inform_extension)
heading *Headings::from_node(parse_node *PN) {
return ParseTree::get_embodying_heading(PN);
}

View file

@ -2,7 +2,9 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d SYNTAX_MODULE TRUE
@ -17,18 +19,21 @@ ALLOCATE_INDIVIDUALLY(parse_node)
ALLOCATE_INDIVIDUALLY(parse_node_tree)
ALLOCATE_IN_ARRAYS(parse_node_annotation, 500)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void SyntaxModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
ParseTree::metadata_setup();
}
void SyntaxModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> =
;
@ -45,12 +50,3 @@ void SyntaxModule::start(void) {
Writers::register_logger_I('N', ParseTree::log_type);
Writers::register_logger('P', ParseTree::log_node);
Writers::register_logger('T', ParseTree::log_subtree);
@<Register this module's command line switches@> =
;
@h The end.
=
void SyntaxModule::end(void) {
}

View file

@ -184,8 +184,6 @@ typedef struct parse_node_annotation {
@e language_element_ANNOT /* |int|: this node is not really a sentence, but a language definition Use */
@e sentence_unparsed_ANNOT /* int: set if verbs haven't been sought yet here */
@e suppress_heading_dependencies_ANNOT /* int: ignore extension dependencies on this heading node */
@e embodying_heading_ANNOT /* |heading|: for parse nodes of headings */
@e inclusion_of_extension_ANNOT /* |inform_extension|: for parse nodes of headings */
@e implied_heading_ANNOT /* int: set only for the heading of implied inclusions */
@d MAX_ANNOT_NUMBER (NO_DEFINED_ANNOT_VALUES+1)

View file

@ -2,10 +2,11 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d WORDS_MODULE TRUE
@d WORDING_LOGS_ALLOWED
@ To begin with, this module needs to allocate memory:
@ -27,22 +28,25 @@ ALLOCATE_INDIVIDUALLY(production_list)
ALLOCATE_INDIVIDUALLY(production)
ALLOCATE_INDIVIDUALLY(ptoken)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void WordsModule::start(void) {
Memory::reason_name(LEXER_TEXT_MREASON, "source text");
Memory::reason_name(LEXER_WORDS_MREASON, "source text details");
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
Lexer::start();
Vocabulary::create_punctuation();
Preform::begin();
}
void WordsModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> =
Writers::register_writer('A', &WordAssemblages::writer);
@ -62,12 +66,3 @@ void WordsModule::start(void) {
@<Register this module's debugging log writers@> =
Writers::register_logger('f', WordAssemblages::log);
Writers::register_logger('v', Vocabulary::log);
@<Register this module's command line switches@> =
;
@h The end.
=
void WordsModule::end(void) {
}

View file

@ -2,16 +2,13 @@
Setting up the use of this module.
@ There is no interesting code in this section: all Intools modules open with
a section like this one, configuring the memory management and debugging log
features we will use from |foundation|.
The following symbol is defined in every tool incorporating this module:
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d CORE_MODULE TRUE
@h Setting up the memory manager.
We need to itemise the structures we'll want to allocate:
@ To begin with, this module needs to allocate memory:
@e bibliographic_datum_MT
@e phrase_MT
@ -184,11 +181,8 @@ ALLOCATE_IN_ARRAYS(stacked_variable, 100)
ALLOCATE_IN_ARRAYS(table_contribution, 100)
ALLOCATE_IN_ARRAYS(value_holster, 100)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@d WORDING_LOGS_ALLOWED
@ Next we define some functions, by macro, which write to the debugging log
or other text streams.
@d REGISTER_WRITER(c, f) Writers::register_logger(c, &f##_writer);
@d COMPILE_WRITER(t, f)
@ -233,13 +227,17 @@ COMPILE_WRITER(property *, Properties::log)
COMPILE_WRITER(nonlocal_variable *, NonlocalVariables::log)
COMPILE_WRITER(noun *, Nouns::log)
@ =
@ Like all modules, this one must define a |start| and |end| function:
=
void CoreModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
}
void CoreModule::end(void) {
}
@ Not all of our memory will be claimed in the form of structures: now and then
we need to use the equivalent of traditional |malloc| and |calloc| routines.
@ -405,8 +403,217 @@ void CoreModule::writer(OUTPUT_STREAM, char *format_string, int wn) {
}
}
@h The end.
@ This module uses |syntax|, and adds the following annotations to the syntax
tree; though it's a little like itemising the baubles on a Christmas tree.
@e action_meaning_ANNOT /* |action_pattern|: meaning in parse tree when used as noun */
@e aph_ANNOT /* |adjectival_phrase|: which adjective is asserted */
@e category_of_I6_translation_ANNOT /* int: what sort of "translates into I6" sentence this is */
@e clears_pronouns_ANNOT /* |int|: this sentence erases the current value of "it" */
@e colon_block_command_ANNOT /* int: this COMMAND uses the ":" not begin/end syntax */
@e condition_tense_ANNOT /* |time_period|: for specification nodes */
@e constant_action_name_ANNOT /* |action_name|: for constant values */
@e constant_action_pattern_ANNOT /* |action_pattern|: for constant values */
@e constant_activity_ANNOT /* |activity|: for constant values */
@e constant_binary_predicate_ANNOT /* |binary_predicate|: for constant values */
@e constant_constant_phrase_ANNOT /* |constant_phrase|: for constant values */
@e constant_enumeration_ANNOT /* |int|: which one from an enumerated kind */
@e constant_equation_ANNOT /* |equation|: for constant values */
@e constant_grammar_verb_ANNOT /* |grammar_verb|: for constant values */
@e constant_instance_ANNOT /* |instance|: for constant values */
@e constant_local_variable_ANNOT /* |local_variable|: for constant values */
@e constant_named_action_pattern_ANNOT /* |named_action_pattern|: for constant values */
@e constant_named_rulebook_outcome_ANNOT /* |named_rulebook_outcome|: for constant values */
@e constant_nonlocal_variable_ANNOT /* |nonlocal_variable|: for constant values */
@e constant_number_ANNOT /* |int|: which integer this is */
@e constant_property_ANNOT /* |property|: for constant values */
@e constant_rule_ANNOT /* |rule|: for constant values */
@e constant_rulebook_ANNOT /* |rulebook|: for constant values */
@e constant_scene_ANNOT /* |scene|: for constant values */
@e constant_table_ANNOT /* |table|: for constant values */
@e constant_table_column_ANNOT /* |table_column|: for constant values */
@e constant_text_ANNOT /* |text_stream|: for constant values */
@e constant_use_option_ANNOT /* |use_option|: for constant values */
@e constant_verb_form_ANNOT /* |verb_form|: for constant values */
@e control_structure_used_ANNOT /* |control_structure_phrase|: for CODE BLOCK nodes only */
@e converted_SN_ANNOT /* |int|: marking descriptions */
@e creation_proposition_ANNOT /* |pcalc_prop|: proposition which newly created value satisfies */
@e creation_site_ANNOT /* |int|: whether an instance was created from this node */
@e defn_language_ANNOT /* |inform_language|: what language this definition is in */
@e end_control_structure_used_ANNOT /* |control_structure_phrase|: for CODE BLOCK nodes only */
@e epistemological_status_ANNOT /* |int|: a bitmap of results from checking an ambiguous reading */
@e evaluation_ANNOT /* |parse_node|: result of evaluating the text */
@e examine_for_ofs_ANNOT /* |int|: mark this as a possible site for removing "of" tree breaks */
@e explicit_iname_ANNOT /* |inter_name|: is this value explicitly an iname? */
@e explicit_literal_ANNOT /* |int|: my value is an explicit integer or text */
@e explicit_vh_ANNOT /* |value_holster|: used for compiling I6-level properties */
@e from_text_substitution_ANNOT /* |int|: whether this is an implicit say invocation */
@e grammar_token_code_ANNOT /* int: used to identify grammar tokens */
@e grammar_token_literal_ANNOT /* int: for grammar tokens which are literal words */
@e grammar_token_relation_ANNOT /* |binary_predicate|: for relation tokens */
@e grammar_value_ANNOT /* |parse_node|: used as a marker when evaluating Understand grammar */
@e imperative_ANNOT /* |int|: marking definitions of imperative verbs */
@e implicit_in_creation_of_ANNOT /* |inference_subject|: for assemblies */
@e implicitness_count_ANNOT /* int: keeping track of recursive assemblies */
@e indentation_level_ANNOT /* |int|: for routines written with Pythonesque indentation */
@e interpretation_of_subject_ANNOT /* |inference_subject|: subject, during passes */
@e is_phrase_option_ANNOT /* |int|: this unparsed text is a phrase option */
@e kind_of_new_variable_ANNOT /* |kind|: what if anything is returned */
@e kind_of_value_ANNOT /* |kind|: for specification nodes */
@e kind_required_by_context_ANNOT /* |kind|: what if anything is expected here */
@e kind_resulting_ANNOT /* |kind|: what if anything is returned */
@e kind_variable_declarations_ANNOT /* |kind_variable_declaration|: and of these */
@e listing_sense_ANNOT /* |int|: are we listing a rule into something, or out of it? */
@e log_inclusion_sense_ANNOT /* |int|: should we include or exclude this from the debugging log? */
@e lpe_options_ANNOT /* |int|: options set for a literal pattern part */
@e modal_verb_ANNOT /* |verb_conjugation|: relevant only for that: e.g., "might" */
@e module_ANNOT /* |compilation_module|: set only for headings, routines and sentences */
@e multiplicity_ANNOT /* |int|: e.g., 5 for "five gold rings" */
@e negated_boolean_ANNOT /* int: set if adjective/verb meant negatively */
@e new_relation_here_ANNOT /* |binary_predicate|: new relation as subject of "relates" sentence */
@e nothing_object_ANNOT /* |int|: this represents |nothing| at run-time */
@e nowhere_ANNOT /* |int|: used by the spatial plugin to show this represents "nowhere" */
@e phrase_invoked_ANNOT /* |phrase|: the phrase believed to be invoked... */
@e phrase_option_ANNOT /* |int|: $2^i$ where $i$ is the option number, $0\leq i<16$ */
@e phrase_options_invoked_ANNOT /* |invocation_options|: details of any options used */
@e property_name_used_as_noun_ANNOT /* |int|: in ambiguous cases such as "open" */
@e proposition_ANNOT /* |pcalc_prop|: for specification nodes */
@e prep_ANNOT /* |preposition_identity|: for e.g. "is on" */
@e quant_ANNOT /* |quantifier|: for quantified excerpts like "three baskets" */
@e quantification_parameter_ANNOT /* |int|: e.g., 3 for "three baskets" */
@e record_as_self_ANNOT /* |int|: record recipient as |self| when writing this */
@e relationship_ANNOT /* |binary_predicate|: for RELATIONSHIP nodes */
@e resolved_ANNOT /* int: temp storage when resolving NPs */
@e response_code_ANNOT /* |int|: for responses only */
@e results_from_splitting_ANNOT /* |int|: node in a routine's parse tree from comma block notation */
@e row_amendable_ANNOT /* int: a candidate row for a table amendment */
@e save_self_ANNOT /* |int|: this invocation must save and preserve |self| at run-time */
@e say_adjective_ANNOT /* |adjectival_phrase|: ...or the adjective to be agreed with by "say" */
@e say_verb_ANNOT /* |verb_conjugation|: ...or the verb to be conjugated by "say" */
@e say_verb_negated_ANNOT /* relevant only for that */
@e self_object_ANNOT /* |int|: this represents |self| at run-time */
@e slash_class_ANNOT /* int: used when partitioning grammar tokens */
@e slash_dash_dash_ANNOT /* |int|: used when partitioning grammar tokens */
@e ssp_closing_segment_wn_ANNOT /* |int|: identifier for the last of these, or |-1| */
@e ssp_segment_count_ANNOT /* |int|: number of subsequent complex-say phrases in stream */
@e subject_ANNOT /* |inference_subject|: what this node describes */
@e subject_term_ANNOT /* |pcalc_term|: what the subject of the subtree was */
@e suppress_newlines_ANNOT /* |int|: whether the next say term runs on */
@e table_cell_unspecified_ANNOT /* int: used to mark table entries as unset */
@e text_unescaped_ANNOT /* |int|: flag used only for literal texts */
@e token_as_parsed_ANNOT /* |parse_node|: what if anything is returned */
@e token_check_to_do_ANNOT /* |parse_node|: what if anything is returned */
@e token_to_be_parsed_against_ANNOT /* |parse_node|: what if anything is returned */
@e turned_already_ANNOT /* |int|: aliasing like "player" to "yourself" performed already */
@e unproven_ANNOT /* |int|: this invocation needs run-time typechecking */
@e verb_id_ANNOT /* int: identifying what kind of VERB node */
@e verb_problem_issued_ANNOT /* |int|: has a problem message about the primary verb been issued already? */
@e vu_ANNOT /* |verb_usage|: for e.g. "does not carry" */
@e you_can_ignore_ANNOT /* |int|: for assertions now drained of meaning */
= (early code)
DECLARE_ANNOTATION_FUNCTIONS(aph, adjectival_phrase)
DECLARE_ANNOTATION_FUNCTIONS(condition_tense, time_period)
DECLARE_ANNOTATION_FUNCTIONS(constant_activity, activity)
DECLARE_ANNOTATION_FUNCTIONS(constant_binary_predicate, binary_predicate)
DECLARE_ANNOTATION_FUNCTIONS(constant_constant_phrase, constant_phrase)
DECLARE_ANNOTATION_FUNCTIONS(constant_equation, equation)
DECLARE_ANNOTATION_FUNCTIONS(constant_instance, instance)
DECLARE_ANNOTATION_FUNCTIONS(constant_local_variable, local_variable)
DECLARE_ANNOTATION_FUNCTIONS(constant_named_rulebook_outcome, named_rulebook_outcome)
DECLARE_ANNOTATION_FUNCTIONS(constant_nonlocal_variable, nonlocal_variable)
DECLARE_ANNOTATION_FUNCTIONS(constant_property, property)
DECLARE_ANNOTATION_FUNCTIONS(constant_rule, rule)
DECLARE_ANNOTATION_FUNCTIONS(constant_rulebook, rulebook)
DECLARE_ANNOTATION_FUNCTIONS(constant_table_column, table_column)
DECLARE_ANNOTATION_FUNCTIONS(constant_table, table)
DECLARE_ANNOTATION_FUNCTIONS(constant_text, text_stream)
DECLARE_ANNOTATION_FUNCTIONS(constant_use_option, use_option)
DECLARE_ANNOTATION_FUNCTIONS(constant_verb_form, verb_form)
DECLARE_ANNOTATION_FUNCTIONS(control_structure_used, control_structure_phrase)
DECLARE_ANNOTATION_FUNCTIONS(creation_proposition, pcalc_prop)
DECLARE_ANNOTATION_FUNCTIONS(defn_language, inform_language)
DECLARE_ANNOTATION_FUNCTIONS(end_control_structure_used, control_structure_phrase)
DECLARE_ANNOTATION_FUNCTIONS(evaluation, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(explicit_vh, value_holster)
DECLARE_ANNOTATION_FUNCTIONS(grammar_token_relation, binary_predicate)
DECLARE_ANNOTATION_FUNCTIONS(grammar_value, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(implicit_in_creation_of, inference_subject)
DECLARE_ANNOTATION_FUNCTIONS(interpretation_of_subject, inference_subject)
DECLARE_ANNOTATION_FUNCTIONS(kind_of_new_variable, kind)
DECLARE_ANNOTATION_FUNCTIONS(kind_of_value, kind)
DECLARE_ANNOTATION_FUNCTIONS(kind_required_by_context, kind)
DECLARE_ANNOTATION_FUNCTIONS(kind_resulting, kind)
DECLARE_ANNOTATION_FUNCTIONS(kind_variable_declarations, kind_variable_declaration)
DECLARE_ANNOTATION_FUNCTIONS(explicit_iname, inter_name)
DECLARE_ANNOTATION_FUNCTIONS(modal_verb, verb_conjugation)
DECLARE_ANNOTATION_FUNCTIONS(module, compilation_module)
DECLARE_ANNOTATION_FUNCTIONS(new_relation_here, binary_predicate)
DECLARE_ANNOTATION_FUNCTIONS(phrase_invoked, phrase)
DECLARE_ANNOTATION_FUNCTIONS(phrase_options_invoked, invocation_options)
DECLARE_ANNOTATION_FUNCTIONS(proposition, pcalc_prop)
DECLARE_ANNOTATION_FUNCTIONS(prep, preposition_identity)
DECLARE_ANNOTATION_FUNCTIONS(quant, quantifier)
DECLARE_ANNOTATION_FUNCTIONS(relationship, binary_predicate)
DECLARE_ANNOTATION_FUNCTIONS(say_adjective, adjectival_phrase)
DECLARE_ANNOTATION_FUNCTIONS(say_verb, verb_conjugation)
DECLARE_ANNOTATION_FUNCTIONS(subject_term, pcalc_term)
DECLARE_ANNOTATION_FUNCTIONS(subject, inference_subject)
DECLARE_ANNOTATION_FUNCTIONS(token_as_parsed, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(token_check_to_do, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(token_to_be_parsed_against, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(vu, verb_usage)
@ So we itemise the pointer-valued annotations below, and the macro expands
to provide their get and set functions:
=
void CoreModule::end(void) {
}
MAKE_ANNOTATION_FUNCTIONS(aph, adjectival_phrase)
MAKE_ANNOTATION_FUNCTIONS(condition_tense, time_period)
MAKE_ANNOTATION_FUNCTIONS(constant_activity, activity)
MAKE_ANNOTATION_FUNCTIONS(constant_binary_predicate, binary_predicate)
MAKE_ANNOTATION_FUNCTIONS(constant_constant_phrase, constant_phrase)
MAKE_ANNOTATION_FUNCTIONS(constant_equation, equation)
MAKE_ANNOTATION_FUNCTIONS(constant_instance, instance)
MAKE_ANNOTATION_FUNCTIONS(constant_local_variable, local_variable)
MAKE_ANNOTATION_FUNCTIONS(constant_named_rulebook_outcome, named_rulebook_outcome)
MAKE_ANNOTATION_FUNCTIONS(constant_nonlocal_variable, nonlocal_variable)
MAKE_ANNOTATION_FUNCTIONS(constant_property, property)
MAKE_ANNOTATION_FUNCTIONS(constant_rule, rule)
MAKE_ANNOTATION_FUNCTIONS(constant_rulebook, rulebook)
MAKE_ANNOTATION_FUNCTIONS(constant_table_column, table_column)
MAKE_ANNOTATION_FUNCTIONS(constant_table, table)
MAKE_ANNOTATION_FUNCTIONS(constant_text, text_stream)
MAKE_ANNOTATION_FUNCTIONS(constant_use_option, use_option)
MAKE_ANNOTATION_FUNCTIONS(constant_verb_form, verb_form)
MAKE_ANNOTATION_FUNCTIONS(control_structure_used, control_structure_phrase)
MAKE_ANNOTATION_FUNCTIONS(creation_proposition, pcalc_prop)
MAKE_ANNOTATION_FUNCTIONS(defn_language, inform_language)
MAKE_ANNOTATION_FUNCTIONS(end_control_structure_used, control_structure_phrase)
MAKE_ANNOTATION_FUNCTIONS(evaluation, parse_node)
MAKE_ANNOTATION_FUNCTIONS(explicit_vh, value_holster)
MAKE_ANNOTATION_FUNCTIONS(grammar_token_relation, binary_predicate)
MAKE_ANNOTATION_FUNCTIONS(grammar_value, parse_node)
MAKE_ANNOTATION_FUNCTIONS(implicit_in_creation_of, inference_subject)
MAKE_ANNOTATION_FUNCTIONS(interpretation_of_subject, inference_subject)
MAKE_ANNOTATION_FUNCTIONS(kind_of_new_variable, kind)
MAKE_ANNOTATION_FUNCTIONS(kind_of_value, kind)
MAKE_ANNOTATION_FUNCTIONS(kind_required_by_context, kind)
MAKE_ANNOTATION_FUNCTIONS(kind_resulting, kind)
MAKE_ANNOTATION_FUNCTIONS(kind_variable_declarations, kind_variable_declaration)
MAKE_ANNOTATION_FUNCTIONS(modal_verb, verb_conjugation)
MAKE_ANNOTATION_FUNCTIONS(new_relation_here, binary_predicate)
MAKE_ANNOTATION_FUNCTIONS(phrase_invoked, phrase)
MAKE_ANNOTATION_FUNCTIONS(phrase_options_invoked, invocation_options)
MAKE_ANNOTATION_FUNCTIONS(proposition, pcalc_prop)
MAKE_ANNOTATION_FUNCTIONS(prep, preposition_identity)
MAKE_ANNOTATION_FUNCTIONS(quant, quantifier)
MAKE_ANNOTATION_FUNCTIONS(relationship, binary_predicate)
MAKE_ANNOTATION_FUNCTIONS(say_adjective, adjectival_phrase)
MAKE_ANNOTATION_FUNCTIONS(say_verb, verb_conjugation)
MAKE_ANNOTATION_FUNCTIONS(subject_term, pcalc_term)
MAKE_ANNOTATION_FUNCTIONS(subject, inference_subject)
MAKE_ANNOTATION_FUNCTIONS(token_as_parsed, parse_node)
MAKE_ANNOTATION_FUNCTIONS(token_check_to_do, parse_node)
MAKE_ANNOTATION_FUNCTIONS(token_to_be_parsed_against, parse_node)
MAKE_ANNOTATION_FUNCTIONS(vu, verb_usage)

View file

@ -4,118 +4,6 @@ Shims for the parse tree.
@h Definitions.
@ Access routines will be needed for some of these, and the following
constructs them:
= (early code)
DECLARE_ANNOTATION_FUNCTIONS(aph, adjectival_phrase)
DECLARE_ANNOTATION_FUNCTIONS(condition_tense, time_period)
DECLARE_ANNOTATION_FUNCTIONS(constant_activity, activity)
DECLARE_ANNOTATION_FUNCTIONS(constant_binary_predicate, binary_predicate)
DECLARE_ANNOTATION_FUNCTIONS(constant_constant_phrase, constant_phrase)
DECLARE_ANNOTATION_FUNCTIONS(constant_equation, equation)
DECLARE_ANNOTATION_FUNCTIONS(constant_instance, instance)
DECLARE_ANNOTATION_FUNCTIONS(constant_local_variable, local_variable)
DECLARE_ANNOTATION_FUNCTIONS(constant_named_rulebook_outcome, named_rulebook_outcome)
DECLARE_ANNOTATION_FUNCTIONS(constant_nonlocal_variable, nonlocal_variable)
DECLARE_ANNOTATION_FUNCTIONS(constant_property, property)
DECLARE_ANNOTATION_FUNCTIONS(constant_rule, rule)
DECLARE_ANNOTATION_FUNCTIONS(constant_rulebook, rulebook)
DECLARE_ANNOTATION_FUNCTIONS(constant_table_column, table_column)
DECLARE_ANNOTATION_FUNCTIONS(constant_table, table)
DECLARE_ANNOTATION_FUNCTIONS(constant_text, text_stream)
DECLARE_ANNOTATION_FUNCTIONS(constant_use_option, use_option)
DECLARE_ANNOTATION_FUNCTIONS(constant_verb_form, verb_form)
DECLARE_ANNOTATION_FUNCTIONS(control_structure_used, control_structure_phrase)
DECLARE_ANNOTATION_FUNCTIONS(creation_proposition, pcalc_prop)
DECLARE_ANNOTATION_FUNCTIONS(defn_language, inform_language)
DECLARE_ANNOTATION_FUNCTIONS(end_control_structure_used, control_structure_phrase)
DECLARE_ANNOTATION_FUNCTIONS(evaluation, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(explicit_vh, value_holster)
DECLARE_ANNOTATION_FUNCTIONS(grammar_token_relation, binary_predicate)
DECLARE_ANNOTATION_FUNCTIONS(grammar_value, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(implicit_in_creation_of, inference_subject)
DECLARE_ANNOTATION_FUNCTIONS(interpretation_of_subject, inference_subject)
DECLARE_ANNOTATION_FUNCTIONS(kind_of_new_variable, kind)
DECLARE_ANNOTATION_FUNCTIONS(kind_of_value, kind)
DECLARE_ANNOTATION_FUNCTIONS(kind_required_by_context, kind)
DECLARE_ANNOTATION_FUNCTIONS(kind_resulting, kind)
DECLARE_ANNOTATION_FUNCTIONS(kind_variable_declarations, kind_variable_declaration)
DECLARE_ANNOTATION_FUNCTIONS(explicit_iname, inter_name)
DECLARE_ANNOTATION_FUNCTIONS(modal_verb, verb_conjugation)
DECLARE_ANNOTATION_FUNCTIONS(module, compilation_module)
DECLARE_ANNOTATION_FUNCTIONS(new_relation_here, binary_predicate)
DECLARE_ANNOTATION_FUNCTIONS(phrase_invoked, phrase)
DECLARE_ANNOTATION_FUNCTIONS(phrase_options_invoked, invocation_options)
DECLARE_ANNOTATION_FUNCTIONS(proposition, pcalc_prop)
DECLARE_ANNOTATION_FUNCTIONS(prep, preposition_identity)
DECLARE_ANNOTATION_FUNCTIONS(quant, quantifier)
DECLARE_ANNOTATION_FUNCTIONS(relationship, binary_predicate)
DECLARE_ANNOTATION_FUNCTIONS(say_adjective, adjectival_phrase)
DECLARE_ANNOTATION_FUNCTIONS(say_verb, verb_conjugation)
DECLARE_ANNOTATION_FUNCTIONS(subject_term, pcalc_term)
DECLARE_ANNOTATION_FUNCTIONS(subject, inference_subject)
DECLARE_ANNOTATION_FUNCTIONS(token_as_parsed, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(token_check_to_do, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(token_to_be_parsed_against, parse_node)
DECLARE_ANNOTATION_FUNCTIONS(vu, verb_usage)
@ So we itemise the pointer-valued annotations below, and the macro expands
to provide their get and set functions:
=
MAKE_ANNOTATION_FUNCTIONS(aph, adjectival_phrase)
MAKE_ANNOTATION_FUNCTIONS(condition_tense, time_period)
MAKE_ANNOTATION_FUNCTIONS(constant_activity, activity)
MAKE_ANNOTATION_FUNCTIONS(constant_binary_predicate, binary_predicate)
MAKE_ANNOTATION_FUNCTIONS(constant_constant_phrase, constant_phrase)
MAKE_ANNOTATION_FUNCTIONS(constant_equation, equation)
MAKE_ANNOTATION_FUNCTIONS(constant_instance, instance)
MAKE_ANNOTATION_FUNCTIONS(constant_local_variable, local_variable)
MAKE_ANNOTATION_FUNCTIONS(constant_named_rulebook_outcome, named_rulebook_outcome)
MAKE_ANNOTATION_FUNCTIONS(constant_nonlocal_variable, nonlocal_variable)
MAKE_ANNOTATION_FUNCTIONS(constant_property, property)
MAKE_ANNOTATION_FUNCTIONS(constant_rule, rule)
MAKE_ANNOTATION_FUNCTIONS(constant_rulebook, rulebook)
MAKE_ANNOTATION_FUNCTIONS(constant_table_column, table_column)
MAKE_ANNOTATION_FUNCTIONS(constant_table, table)
MAKE_ANNOTATION_FUNCTIONS(constant_text, text_stream)
MAKE_ANNOTATION_FUNCTIONS(constant_use_option, use_option)
MAKE_ANNOTATION_FUNCTIONS(constant_verb_form, verb_form)
MAKE_ANNOTATION_FUNCTIONS(control_structure_used, control_structure_phrase)
MAKE_ANNOTATION_FUNCTIONS(creation_proposition, pcalc_prop)
MAKE_ANNOTATION_FUNCTIONS(defn_language, inform_language)
MAKE_ANNOTATION_FUNCTIONS(end_control_structure_used, control_structure_phrase)
MAKE_ANNOTATION_FUNCTIONS(evaluation, parse_node)
MAKE_ANNOTATION_FUNCTIONS(explicit_vh, value_holster)
MAKE_ANNOTATION_FUNCTIONS(grammar_token_relation, binary_predicate)
MAKE_ANNOTATION_FUNCTIONS(grammar_value, parse_node)
MAKE_ANNOTATION_FUNCTIONS(implicit_in_creation_of, inference_subject)
MAKE_ANNOTATION_FUNCTIONS(interpretation_of_subject, inference_subject)
MAKE_ANNOTATION_FUNCTIONS(kind_of_new_variable, kind)
MAKE_ANNOTATION_FUNCTIONS(kind_of_value, kind)
MAKE_ANNOTATION_FUNCTIONS(kind_required_by_context, kind)
MAKE_ANNOTATION_FUNCTIONS(kind_resulting, kind)
MAKE_ANNOTATION_FUNCTIONS(kind_variable_declarations, kind_variable_declaration)
// see codegen module for (explicit_iname, inter_name)
MAKE_ANNOTATION_FUNCTIONS(modal_verb, verb_conjugation)
// see codegen module for (module, compilation_module)
MAKE_ANNOTATION_FUNCTIONS(new_relation_here, binary_predicate)
MAKE_ANNOTATION_FUNCTIONS(phrase_invoked, phrase)
MAKE_ANNOTATION_FUNCTIONS(phrase_options_invoked, invocation_options)
MAKE_ANNOTATION_FUNCTIONS(proposition, pcalc_prop)
MAKE_ANNOTATION_FUNCTIONS(prep, preposition_identity)
MAKE_ANNOTATION_FUNCTIONS(quant, quantifier)
MAKE_ANNOTATION_FUNCTIONS(relationship, binary_predicate)
MAKE_ANNOTATION_FUNCTIONS(say_adjective, adjectival_phrase)
MAKE_ANNOTATION_FUNCTIONS(say_verb, verb_conjugation)
MAKE_ANNOTATION_FUNCTIONS(subject_term, pcalc_term)
MAKE_ANNOTATION_FUNCTIONS(subject, inference_subject)
MAKE_ANNOTATION_FUNCTIONS(token_as_parsed, parse_node)
MAKE_ANNOTATION_FUNCTIONS(token_check_to_do, parse_node)
MAKE_ANNOTATION_FUNCTIONS(token_to_be_parsed_against, parse_node)
MAKE_ANNOTATION_FUNCTIONS(vu, verb_usage)
@
@d PARSE_TREE_COPIER ParseTreeUsage::copy_annotations
@ -201,114 +89,6 @@ also makes it easier for us to manipulate the results.
@e TEST_PHRASE_OPTION_NT /* "giving full details", say */
@e TEST_VALUE_NT /* when a value is used as a condition */
@ This is a little like itemising the baubles on a Christmas tree, but here
goes. The annotations used are identified by nonzero ID numbers, as follows:
@e action_meaning_ANNOT /* |action_pattern|: meaning in parse tree when used as noun */
@e aph_ANNOT /* |adjectival_phrase|: which adjective is asserted */
@e category_of_I6_translation_ANNOT /* int: what sort of "translates into I6" sentence this is */
@e clears_pronouns_ANNOT /* |int|: this sentence erases the current value of "it" */
@e colon_block_command_ANNOT /* int: this COMMAND uses the ":" not begin/end syntax */
@e condition_tense_ANNOT /* |time_period|: for specification nodes */
@e constant_action_name_ANNOT /* |action_name|: for constant values */
@e constant_action_pattern_ANNOT /* |action_pattern|: for constant values */
@e constant_activity_ANNOT /* |activity|: for constant values */
@e constant_binary_predicate_ANNOT /* |binary_predicate|: for constant values */
@e constant_constant_phrase_ANNOT /* |constant_phrase|: for constant values */
@e constant_enumeration_ANNOT /* |int|: which one from an enumerated kind */
@e constant_equation_ANNOT /* |equation|: for constant values */
@e constant_grammar_verb_ANNOT /* |grammar_verb|: for constant values */
@e constant_instance_ANNOT /* |instance|: for constant values */
@e constant_local_variable_ANNOT /* |local_variable|: for constant values */
@e constant_named_action_pattern_ANNOT /* |named_action_pattern|: for constant values */
@e constant_named_rulebook_outcome_ANNOT /* |named_rulebook_outcome|: for constant values */
@e constant_nonlocal_variable_ANNOT /* |nonlocal_variable|: for constant values */
@e constant_number_ANNOT /* |int|: which integer this is */
@e constant_property_ANNOT /* |property|: for constant values */
@e constant_rule_ANNOT /* |rule|: for constant values */
@e constant_rulebook_ANNOT /* |rulebook|: for constant values */
@e constant_scene_ANNOT /* |scene|: for constant values */
@e constant_table_ANNOT /* |table|: for constant values */
@e constant_table_column_ANNOT /* |table_column|: for constant values */
@e constant_text_ANNOT /* |text_stream|: for constant values */
@e constant_use_option_ANNOT /* |use_option|: for constant values */
@e constant_verb_form_ANNOT /* |verb_form|: for constant values */
@e control_structure_used_ANNOT /* |control_structure_phrase|: for CODE BLOCK nodes only */
@e converted_SN_ANNOT /* |int|: marking descriptions */
@e creation_proposition_ANNOT /* |pcalc_prop|: proposition which newly created value satisfies */
@e creation_site_ANNOT /* |int|: whether an instance was created from this node */
@e defn_language_ANNOT /* |inform_language|: what language this definition is in */
@e end_control_structure_used_ANNOT /* |control_structure_phrase|: for CODE BLOCK nodes only */
@e epistemological_status_ANNOT /* |int|: a bitmap of results from checking an ambiguous reading */
@e evaluation_ANNOT /* |parse_node|: result of evaluating the text */
@e examine_for_ofs_ANNOT /* |int|: mark this as a possible site for removing "of" tree breaks */
@e explicit_iname_ANNOT /* |inter_name|: is this value explicitly an iname? */
@e explicit_literal_ANNOT /* |int|: my value is an explicit integer or text */
@e explicit_vh_ANNOT /* |value_holster|: used for compiling I6-level properties */
@e from_text_substitution_ANNOT /* |int|: whether this is an implicit say invocation */
@e grammar_token_code_ANNOT /* int: used to identify grammar tokens */
@e grammar_token_literal_ANNOT /* int: for grammar tokens which are literal words */
@e grammar_token_relation_ANNOT /* |binary_predicate|: for relation tokens */
@e grammar_value_ANNOT /* |parse_node|: used as a marker when evaluating Understand grammar */
@e imperative_ANNOT /* |int|: marking definitions of imperative verbs */
@e implicit_in_creation_of_ANNOT /* |inference_subject|: for assemblies */
@e implicitness_count_ANNOT /* int: keeping track of recursive assemblies */
@e indentation_level_ANNOT /* |int|: for routines written with Pythonesque indentation */
@e interpretation_of_subject_ANNOT /* |inference_subject|: subject, during passes */
@e is_phrase_option_ANNOT /* |int|: this unparsed text is a phrase option */
@e kind_of_new_variable_ANNOT /* |kind|: what if anything is returned */
@e kind_of_value_ANNOT /* |kind|: for specification nodes */
@e kind_required_by_context_ANNOT /* |kind|: what if anything is expected here */
@e kind_resulting_ANNOT /* |kind|: what if anything is returned */
@e kind_variable_declarations_ANNOT /* |kind_variable_declaration|: and of these */
@e listing_sense_ANNOT /* |int|: are we listing a rule into something, or out of it? */
@e log_inclusion_sense_ANNOT /* |int|: should we include or exclude this from the debugging log? */
@e lpe_options_ANNOT /* |int|: options set for a literal pattern part */
@e modal_verb_ANNOT /* |verb_conjugation|: relevant only for that: e.g., "might" */
@e module_ANNOT /* |compilation_module|: set only for headings, routines and sentences */
@e multiplicity_ANNOT /* |int|: e.g., 5 for "five gold rings" */
@e negated_boolean_ANNOT /* int: set if adjective/verb meant negatively */
@e new_relation_here_ANNOT /* |binary_predicate|: new relation as subject of "relates" sentence */
@e nothing_object_ANNOT /* |int|: this represents |nothing| at run-time */
@e nowhere_ANNOT /* |int|: used by the spatial plugin to show this represents "nowhere" */
@e phrase_invoked_ANNOT /* |phrase|: the phrase believed to be invoked... */
@e phrase_option_ANNOT /* |int|: $2^i$ where $i$ is the option number, $0\leq i<16$ */
@e phrase_options_invoked_ANNOT /* |invocation_options|: details of any options used */
@e property_name_used_as_noun_ANNOT /* |int|: in ambiguous cases such as "open" */
@e proposition_ANNOT /* |pcalc_prop|: for specification nodes */
@e prep_ANNOT /* |preposition_identity|: for e.g. "is on" */
@e quant_ANNOT /* |quantifier|: for quantified excerpts like "three baskets" */
@e quantification_parameter_ANNOT /* |int|: e.g., 3 for "three baskets" */
@e record_as_self_ANNOT /* |int|: record recipient as |self| when writing this */
@e relationship_ANNOT /* |binary_predicate|: for RELATIONSHIP nodes */
@e resolved_ANNOT /* int: temp storage when resolving NPs */
@e response_code_ANNOT /* |int|: for responses only */
@e results_from_splitting_ANNOT /* |int|: node in a routine's parse tree from comma block notation */
@e row_amendable_ANNOT /* int: a candidate row for a table amendment */
@e save_self_ANNOT /* |int|: this invocation must save and preserve |self| at run-time */
@e say_adjective_ANNOT /* |adjectival_phrase|: ...or the adjective to be agreed with by "say" */
@e say_verb_ANNOT /* |verb_conjugation|: ...or the verb to be conjugated by "say" */
@e say_verb_negated_ANNOT /* relevant only for that */
@e self_object_ANNOT /* |int|: this represents |self| at run-time */
@e slash_class_ANNOT /* int: used when partitioning grammar tokens */
@e slash_dash_dash_ANNOT /* |int|: used when partitioning grammar tokens */
@e ssp_closing_segment_wn_ANNOT /* |int|: identifier for the last of these, or |-1| */
@e ssp_segment_count_ANNOT /* |int|: number of subsequent complex-say phrases in stream */
@e subject_ANNOT /* |inference_subject|: what this node describes */
@e subject_term_ANNOT /* |pcalc_term|: what the subject of the subtree was */
@e suppress_newlines_ANNOT /* |int|: whether the next say term runs on */
@e table_cell_unspecified_ANNOT /* int: used to mark table entries as unset */
@e text_unescaped_ANNOT /* |int|: flag used only for literal texts */
@e token_as_parsed_ANNOT /* |parse_node|: what if anything is returned */
@e token_check_to_do_ANNOT /* |parse_node|: what if anything is returned */
@e token_to_be_parsed_against_ANNOT /* |parse_node|: what if anything is returned */
@e turned_already_ANNOT /* |int|: aliasing like "player" to "yourself" performed already */
@e unproven_ANNOT /* |int|: this invocation needs run-time typechecking */
@e verb_id_ANNOT /* int: identifying what kind of VERB node */
@e verb_problem_issued_ANNOT /* |int|: has a problem message about the primary verb been issued already? */
@e vu_ANNOT /* |verb_usage|: for e.g. "does not carry" */
@e you_can_ignore_ANNOT /* |int|: for assertions now drained of meaning */
@
@e L4_NCAT

View file

@ -2,17 +2,9 @@
Setting up the use of this module.
@h Predeclarations.
= (early code)
DECLARE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern)
DECLARE_ANNOTATION_FUNCTIONS(constant_action_name, action_name)
DECLARE_ANNOTATION_FUNCTIONS(constant_action_pattern, action_pattern)
DECLARE_ANNOTATION_FUNCTIONS(constant_grammar_verb, grammar_verb)
DECLARE_ANNOTATION_FUNCTIONS(constant_named_action_pattern, named_action_pattern)
DECLARE_ANNOTATION_FUNCTIONS(constant_scene, scene)
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d IF_MODULE TRUE
@ -104,11 +96,16 @@ COMPILE_WRITER(action_name_list *, PL::Actions::Lists::log)
COMPILE_WRITER(action_name *, PL::Actions::log)
void IFModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
}
void IFModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> =
;
@ -129,11 +126,13 @@ void IFModule::start(void) {
REGISTER_WRITER('L', PL::Actions::Lists::log);
REGISTER_WRITER('l', PL::Actions::log);
@<Register this module's command line switches@> =
;
@ This module uses |syntax|, and adds the following annotations to the
syntax tree.
@h The end.
=
void IFModule::end(void) {
}
= (early code)
DECLARE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern)
DECLARE_ANNOTATION_FUNCTIONS(constant_action_name, action_name)
DECLARE_ANNOTATION_FUNCTIONS(constant_action_pattern, action_pattern)
DECLARE_ANNOTATION_FUNCTIONS(constant_grammar_verb, grammar_verb)
DECLARE_ANNOTATION_FUNCTIONS(constant_named_action_pattern, named_action_pattern)
DECLARE_ANNOTATION_FUNCTIONS(constant_scene, scene)

View file

@ -2,7 +2,9 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d INDEX_MODULE TRUE
@ -19,16 +21,20 @@ ALLOCATE_INDIVIDUALLY(index_element)
ALLOCATE_INDIVIDUALLY(index_page)
ALLOCATE_INDIVIDUALLY(lexicon_entry)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void IndexModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
}
void IndexModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> =
;
@ -38,9 +44,3 @@ void IndexModule::start(void) {
@<Register this module's debugging log writers@> =
;
@h The end.
=
void IndexModule::end(void) {
}

View file

@ -2,7 +2,9 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d INFLECTIONS_MODULE TRUE
@ -19,9 +21,7 @@ ALLOCATE_INDIVIDUALLY(name_cluster)
ALLOCATE_INDIVIDUALLY(plural_dictionary_entry)
ALLOCATE_INDIVIDUALLY(verb_conjugation)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void InflectionsModule::start(void) {
@ -30,6 +30,8 @@ void InflectionsModule::start(void) {
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
}
void InflectionsModule::end(void) {
}
@<Register this module's stream writers@> =
;
@ -48,9 +50,3 @@ void InflectionsModule::start(void) {
@<Register this module's command line switches@> =
;
@h The end.
=
void InflectionsModule::end(void) {
}

View file

@ -2,7 +2,9 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d KINDS_MODULE TRUE
@ -33,17 +35,20 @@ ALLOCATE_IN_ARRAYS(kind_constructor_comparison_schema, 100)
ALLOCATE_IN_ARRAYS(kind_constructor_instance, 100)
ALLOCATE_IN_ARRAYS(unit_sequence, 50)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void KindsModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
}
void KindsModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> =
;
@ -63,12 +68,3 @@ void KindsModule::start(void) {
@<Register this module's debugging log writers@> =
;
@<Register this module's command line switches@> =
;
@h The end.
=
void KindsModule::end(void) {
}

View file

@ -2,7 +2,9 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d LINGUISTICS_MODULE TRUE
@ -39,21 +41,24 @@ ALLOCATE_IN_ARRAYS(time_period, 100)
ALLOCATE_INDIVIDUALLY(excerpt_meaning)
ALLOCATE_INDIVIDUALLY(noun)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void LinguisticsModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
Cardinals::enable_in_word_form();
Articles::mark_for_preform();
Prepositions::mark_for_preform();
Diagrams::setup();
}
void LinguisticsModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> =
;
@ -80,20 +85,47 @@ void LinguisticsModule::start(void) {
Writers::register_logger('w', Verbs::log_verb);
Writers::register_logger('y', VerbMeanings::log);
@ This module uses |syntax|, and adds the following annotations to the
syntax tree.
@<Register this module's command line switches@> =
;
@e meaning_ANNOT /* |excerpt_meaning|: for leaves */
@ =
@e verbal_certainty_ANNOT /* |int|: certainty level if known */
@e sentence_is_existential_ANNOT /* |int|: such as "there is a man" */
@e linguistic_error_here_ANNOT /* |int|: one of the errors occurred here */
@e inverted_verb_ANNOT /* |int|: an inversion of subject and object has occurred */
@e possessive_verb_ANNOT /* |int|: this is a non-relative use of "to have" */
@e verb_ANNOT /* |verb_usage|: what's being done here */
@e preposition_ANNOT /* |preposition_identity|: which preposition, if any, qualifies it */
@e second_preposition_ANNOT /* |preposition_identity|: which further preposition, if any, qualifies it */
@e verb_meaning_ANNOT /* |verb_meaning|: what it means */
@e nounphrase_article_ANNOT /* |int|: definite or indefinite article: see below */
@e plural_reference_ANNOT /* |int|: used by PROPER NOUN nodes for evident plurals */
@e gender_reference_ANNOT /* |int|: used by PROPER NOUN nodes for evident genders */
@e relationship_node_type_ANNOT /* |int|: what kind of inference this assertion makes */
@e implicitly_refers_to_ANNOT /* |int|: this will implicitly refer to something */
=
DECLARE_ANNOTATION_FUNCTIONS(meaning, excerpt_meaning)
DECLARE_ANNOTATION_FUNCTIONS(verb, verb_usage)
DECLARE_ANNOTATION_FUNCTIONS(preposition, preposition_identity)
DECLARE_ANNOTATION_FUNCTIONS(second_preposition, preposition_identity)
DECLARE_ANNOTATION_FUNCTIONS(verb_meaning, verb_meaning)
MAKE_ANNOTATION_FUNCTIONS(meaning, excerpt_meaning)
MAKE_ANNOTATION_FUNCTIONS(verb, verb_usage)
MAKE_ANNOTATION_FUNCTIONS(preposition, preposition_identity)
MAKE_ANNOTATION_FUNCTIONS(second_preposition, preposition_identity)
MAKE_ANNOTATION_FUNCTIONS(verb_meaning, verb_meaning)
@ This module requires |words|, which contains the Preform parser. When that
initialises, it calls the following routine to improve its performance.
=
void LinguisticsModule::preform_optimiser(void) {
Cardinals::preform_optimiser();
VerbUsages::preform_optimiser();
Prepositions::preform_optimiser();
Quantifiers::make_built_in();
}
@h The end.
=
void LinguisticsModule::end(void) {
}

View file

@ -64,15 +64,6 @@ typedef struct excerpt_meaning {
MEMORY_MANAGEMENT
} excerpt_meaning;
@ Annotations:
@e meaning_ANNOT /* |excerpt_meaning|: for leaves */
=
DECLARE_ANNOTATION_FUNCTIONS(meaning, excerpt_meaning)
MAKE_ANNOTATION_FUNCTIONS(meaning, excerpt_meaning)
@h Meaning codes.
These assign a context to a meaning, and so decide how the |data| pointer for
an excerpt meaning is to interpreted. For instance, "Persian carpet" might

View file

@ -16,38 +16,11 @@ To construct standard verb-phrase nodes in the parse tree.
@e KIND_NT /* "A woman is a kind of person" */
@e PROPERTY_LIST_NT /* "capacity 2" */
@e verbal_certainty_ANNOT /* |int|: certainty level if known */
@e sentence_is_existential_ANNOT /* |int|: such as "there is a man" */
@e linguistic_error_here_ANNOT /* |int|: one of the errors occurred here */
@e inverted_verb_ANNOT /* |int|: an inversion of subject and object has occurred */
@e possessive_verb_ANNOT /* |int|: this is a non-relative use of "to have" */
@e verb_ANNOT /* |verb_usage|: what's being done here */
@e preposition_ANNOT /* |preposition_identity|: which preposition, if any, qualifies it */
@e second_preposition_ANNOT /* |preposition_identity|: which further preposition, if any, qualifies it */
@e verb_meaning_ANNOT /* |verb_meaning|: what it means */
@e nounphrase_article_ANNOT /* |int|: definite or indefinite article: see below */
@e plural_reference_ANNOT /* |int|: used by PROPER NOUN nodes for evident plurals */
@e gender_reference_ANNOT /* |int|: used by PROPER NOUN nodes for evident genders */
@e relationship_node_type_ANNOT /* |int|: what kind of inference this assertion makes */
@e implicitly_refers_to_ANNOT /* |int|: this will implicitly refer to something */
@d ASSERT_NFLAG 0x00000008 /* allow this on either side of an assertion? */
@e TwoLikelihoods_LINERROR
=
DECLARE_ANNOTATION_FUNCTIONS(verb, verb_usage)
DECLARE_ANNOTATION_FUNCTIONS(preposition, preposition_identity)
DECLARE_ANNOTATION_FUNCTIONS(second_preposition, preposition_identity)
DECLARE_ANNOTATION_FUNCTIONS(verb_meaning, verb_meaning)
@ =
MAKE_ANNOTATION_FUNCTIONS(verb, verb_usage)
MAKE_ANNOTATION_FUNCTIONS(preposition, preposition_identity)
MAKE_ANNOTATION_FUNCTIONS(second_preposition, preposition_identity)
MAKE_ANNOTATION_FUNCTIONS(verb_meaning, verb_meaning)
void Diagrams::setup(void) {
ParseTree::md((parse_tree_node_type) { AVERB_NT, "AVERB_NT", 0, 0, L3_NCAT, 0 });
ParseTree::md((parse_tree_node_type) { RELATIONSHIP_NT, "RELATIONSHIP_NT", 0, 2, L3_NCAT, ASSERT_NFLAG });

View file

@ -2,7 +2,9 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d MULTIMEDIA_MODULE TRUE
@ -17,17 +19,20 @@ ALLOCATE_INDIVIDUALLY(blorb_figure)
ALLOCATE_INDIVIDUALLY(blorb_sound)
ALLOCATE_INDIVIDUALLY(external_file)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void MultimediaModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
}
void MultimediaModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> =
;
@ -37,12 +42,3 @@ void MultimediaModule::start(void) {
@<Register this module's debugging log writers@> =
;
@<Register this module's command line switches@> =
;
@h The end.
=
void MultimediaModule::end(void) {
}

View file

@ -2,30 +2,27 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d PROBLEMS_MODULE TRUE
@h Annotations.
@e problem_falls_under_ANNOT /* |parse_node|: what heading the sentence falls under */
=
DECLARE_ANNOTATION_FUNCTIONS(problem_falls_under, parse_node)
MAKE_ANNOTATION_FUNCTIONS(problem_falls_under, parse_node)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void ProblemsModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
ParseTree::allow_annotation_to_category(L2_NCAT, problem_falls_under_ANNOT);
}
void ProblemsModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> =
;
@ -36,11 +33,11 @@ void ProblemsModule::start(void) {
@<Register this module's debugging log writers@> =
;
@<Register this module's command line switches@> =
;
@ This module uses |syntax|, and adds the following annotations to the
syntax tree.
@h The end.
@e problem_falls_under_ANNOT /* |parse_node|: what heading the sentence falls under */
=
void ProblemsModule::end(void) {
}
DECLARE_ANNOTATION_FUNCTIONS(problem_falls_under, parse_node)
MAKE_ANNOTATION_FUNCTIONS(problem_falls_under, parse_node)

View file

@ -2,12 +2,13 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d CODEGEN_MODULE TRUE
@h Setting up the memory manager.
We need to itemise the structures we'll want to allocate:
@ To begin with, this module needs to allocate memory:
@e I6T_intervention_MT
@e codegen_pipeline_MT
@ -21,8 +22,6 @@ We need to itemise the structures we'll want to allocate:
@e generated_segment_MT
@e link_instruction_MT
@ With allocation functions:
=
ALLOCATE_INDIVIDUALLY(I6T_intervention)
ALLOCATE_INDIVIDUALLY(codegen_pipeline)
@ -36,9 +35,7 @@ ALLOCATE_INDIVIDUALLY(code_generation)
ALLOCATE_INDIVIDUALLY(generated_segment)
ALLOCATE_INDIVIDUALLY(link_instruction)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void CodegenModule::start(void) {
@ -46,7 +43,8 @@ void CodegenModule::start(void) {
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
}
void CodegenModule::end(void) {
}
@
@ -76,12 +74,3 @@ void CodegenModule::start(void) {
@<Register this module's debugging log writers@> =
;
@<Register this module's command line switches@> =
;
@h The end.
=
void CodegenModule::end(void) {
}

View file

@ -2,7 +2,9 @@
Setting up the use of this module.
@h Introduction.
@ This section simoly sets up the module in ways expected by |foundation|, and
contains no code of interest. The following constant exists only in tools
which use this module:
@d INTER_MODULE TRUE
@ -43,9 +45,7 @@ ALLOCATE_IN_ARRAYS(inter_symbol, 1024)
ALLOCATE_IN_ARRAYS(inter_tree_node, 8192)
ALLOCATE_IN_ARRAYS(inter_annotation, 8192)
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
@ Like all modules, this one must define a |start| and |end| function:
=
void InterModule::start(void) {
@ -53,11 +53,12 @@ void InterModule::start(void) {
@<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
Inter::Defn::create_language();
Inter::Types::create_all();
}
void InterModule::end(void) {
}
@
@ -96,12 +97,3 @@ void InterModule::start(void) {
Writers::register_logger('4', Inter::SymbolsTables::log);
Writers::register_logger('5', Inter::Bookmarks::log);
Writers::register_logger('6', Inter::Packages::log);
@<Register this module's command line switches@> =
;
@h The end.
=
void InterModule::end(void) {
}