1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-01 06:24:58 +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 # 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 ## About Inform 7

View file

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

View file

@ -59,9 +59,10 @@
<!--Weave of '1/am' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
@ -85,7 +86,8 @@
<p class="inwebparagraph"></p> <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"> <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 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 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 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">Architectures::create</span><span class="plain">();</span>
<span class="functiontext">TargetVMs::create</span><span class="plain">();</span> <span class="functiontext">TargetVMs::create</span><span class="plain">();</span>
<span class="plain">}</span> <span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ArchModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">The function ArchModule::start appears nowhere else.</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"> <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; = &lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p> </code></p>
@ -156,31 +161,6 @@
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</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>
<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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </main>

View file

@ -59,15 +59,16 @@
<!--Weave of '1/cm' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">CODEGEN_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span> <span class="definitionkeyword">define</span> <span class="constant">CODEGEN_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre> </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> </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">generated_segment_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">link_instruction_MT</span> <span class="definitionkeyword">enum</span> <span class="constant">link_instruction_MT</span>
</pre> </pre>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>With allocation functions:
</p>
<pre class="display"> <pre class="display">
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">I6T_intervention</span><span class="plain">)</span> <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"></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. </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:
foundation module does that automatically.)
</p> </p>
<pre class="display"> <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> <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 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">4.3</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">4.5</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">4.6</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">4.7</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> <span class="plain">}</span>
</pre> </pre>
@ -123,14 +121,16 @@ foundation module does that automatically.)
<p class="endnote">The function CodegenModule::start appears nowhere else.</p> <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"> <pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">CODE_GENERATION_MREASON</span> <span class="definitionkeyword">enum</span> <span class="constant">CODE_GENERATION_MREASON</span>
</pre> </pre>
<p class="inwebparagraph"><a id="SP4_2"></a><b>&#167;4.2. </b><code class="display"> <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">4.2</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's memory allocation reasons</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p> </code></p>
@ -140,10 +140,10 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p> <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"> <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">4.3</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">3.3</span>&gt; =
</code></p> </code></p>
@ -153,9 +153,9 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p> <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"> <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">ELIMINATION_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">CONSTANT_DEPTH_CALCULATION_DA</span> <span class="definitionkeyword">enum</span> <span class="constant">CONSTANT_DEPTH_CALCULATION_DA</span>
</pre> </pre>
<p class="inwebparagraph"><a id="SP4_5"></a><b>&#167;4.5. </b><code class="display"> <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">4.5</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p> </code></p>
@ -180,10 +180,10 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p> <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"> <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">4.6</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.6</span>&gt; =
</code></p> </code></p>
@ -193,32 +193,7 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p> <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_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>
<hr class="tocbar"> <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"> <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--> <!--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="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>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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>There is no interesting code in this section: all Intools modules open with which use this module:
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> </p>
<pre class="definitions"> <pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">CORE_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span> <span class="definitionkeyword">define</span> <span class="constant">CORE_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre> </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> </p>
@ -259,13 +254,12 @@ features we will use from <code class="display"><span class="extract">foundation
<p class="inwebparagraph"></p> <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 <p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b>Next we define some functions, by macro, which write to the debugging log
foundation module does that automatically.) or other text streams.
</p> </p>
<pre class="definitions"> <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">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="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> <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"></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"> <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 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> &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="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> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">The function CoreModule::start appears nowhere else.</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 <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. 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> </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="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"> <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="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="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> </pre>
<p class="inwebparagraph"></p> <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"> <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"> <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="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, <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 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="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, <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: 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="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> <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="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 <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? result have?

View file

@ -1604,7 +1604,7 @@ usages to the debugging log.
<p class="inwebparagraph"></p> <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> <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--> <!--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="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="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 <p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
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>
<pre class="definitions"> <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="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"> <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">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> <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> </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 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 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. 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"> <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> <span class="definitionkeyword">enum</span> <span class="constant">UNKNOWN_NT</span><span class="plain"> </span> <span class="comment">"arfle barfle gloop"</span>
</pre> </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 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 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" 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">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> <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> </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 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 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 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">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> <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> </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 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 rather than as (for example) phrases: this reduces parsing ambiguities, but
also makes it easier for us to manipulate the results. 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_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> <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> </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 <p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b></p>
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>
<pre class="definitions"> <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">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> <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> </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"> <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="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"> <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="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"> <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="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> </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_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_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="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 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. 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 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="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"> <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">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> <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> <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> <span class="plain">}</span>
</pre> </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="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"> <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">17.1</span>&gt; = &lt;<span class="cwebmacrodefn">Log annotations of specification nodes</span> <span class="cwebmacronumber">14.1</span>&gt; =
</code></p> </code></p>
@ -824,14 +591,14 @@ be such that their head nodes each pass this test:
<p class="inwebparagraph"></p> <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>
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -889,9 +656,9 @@ be such that their head nodes each pass this test:
<p class="inwebparagraph"></p> <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"> <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="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"> <pre class="definitions">

View file

@ -56,37 +56,30 @@
</nav> </nav>
<main role="main"> <main role="main">
<!--Weave of '1/im' generated by 7--> <!--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>Index Module</b></li></ul><p class="purpose">Setting up the use of this module.</p> <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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">HTML_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span> <span class="definitionkeyword">define</span> <span class="constant">HTML_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre> </pre>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>To begin with, this module needs to allocate memory: <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">
</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> </p>
<pre class="display"> <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> <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 memory allocation reasons</span> <span class="cwebmacronumber">2.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 stream writers</span> <span class="cwebmacronumber">2.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 debugging log aspects</span> <span class="cwebmacronumber">2.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 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> <span class="plain">}</span>
</pre> </pre>
@ -94,70 +87,60 @@ foundation module does that automatically.)
<p class="endnote">The function HTMLModule::start appears nowhere else.</p> <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="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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </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"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>
<head> <head>
<title>1/im</title> <title>1/hm</title>
<meta name="viewport" content="width=device-width initial-scale=1"> <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-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb"> <meta http-equiv="Content-Language" content="en-gb">

View file

@ -63,7 +63,7 @@
<p><span class="purpose"></span></p> <p><span class="purpose"></span></p>
<ul class="sectionlist"> <ul class="sectionlist">
<li> <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> <span class="purpose">Setting up the use of this module.</span></p>
</li> </li>
</ul> </ul>

View file

@ -59,29 +59,18 @@
<!--Weave of '1/im' generated by 7--> <!--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="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> <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:
<pre class="display"> </p>
<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>
<pre class="definitions"> <pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">IF_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span> <span class="definitionkeyword">define</span> <span class="constant">IF_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre> </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> </p>
@ -163,7 +152,7 @@
<p class="inwebparagraph"></p> <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.) foundation module does that automatically.)
</p> </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="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> <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 memory allocation reasons</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">4.3</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 writers</span> <span class="cwebmacronumber">4.4</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 command line switches</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">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> <span class="plain">}</span>
</pre> </pre>
@ -187,8 +178,10 @@ foundation module does that automatically.)
<p class="endnote">The function IFModule::start appears nowhere else.</p> <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"> <p class="endnote">The function IFModule::end appears nowhere else.</p>
&lt;<span class="cwebmacrodefn">Register this module's stream writers</span> <span class="cwebmacronumber">4.1</span>&gt; =
<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> </code></p>
@ -198,17 +191,30 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p> <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"> <pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_DA</span> <span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_CONSTRUCTION_DA</span> <span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_CONSTRUCTION_DA</span>
</pre> </pre>
<p class="inwebparagraph"><a id="SP4_3"></a><b>&#167;4.3. </b><code class="display"> <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">4.3</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p> </code></p>
@ -219,10 +225,10 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p> <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"> <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">4.4</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p> </code></p>
@ -236,33 +242,24 @@ foundation module does that automatically.)
<p class="inwebparagraph"></p> <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"> <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
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">4.5</span>&gt; = syntax tree.
</code></p> </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"> <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="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="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> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">The function IFModule::end appears nowhere else.</p>
<hr class="tocbar"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </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::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 <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 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::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> <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::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> <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::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> <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::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 <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 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="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"> <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"> <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--> <!--End of weave-->

View file

@ -318,11 +318,6 @@ and cannot contain information about releasing or about virtual machines.
<pre class="display"> <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">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="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> <span class="plain">}</span>

View file

@ -59,9 +59,10 @@
<!--Weave of '1/im' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
@ -87,16 +88,18 @@
<p class="inwebparagraph"></p> <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 <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:
foundation module does that automatically.)
</p> </p>
<pre class="display"> <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> <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 memory allocation reasons</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 stream writers</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 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> <span class="plain">}</span>
</pre> </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::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"> <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> </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="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"> <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> </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="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"> <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> </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="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"> <pre class="displaydefn">
<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>
<span class="plain">}</span>
</pre> </pre>
<p class="inwebparagraph"></p> <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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->

View file

@ -59,9 +59,10 @@
<!--Weave of '1/im' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
@ -87,8 +88,7 @@
<p class="inwebparagraph"></p> <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 <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:
foundation module does that automatically.)
</p> </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 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 command line switches</span> <span class="cwebmacronumber">3.5</span>&gt;<span class="character">;</span>
<span class="plain">}</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> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">The function InflectionsModule::start appears nowhere else.</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"> <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 stream writers</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p> </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="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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </main>

View file

@ -59,9 +59,10 @@
<!--Weave of '1/im' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
@ -111,8 +112,7 @@
<p class="inwebparagraph"></p> <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 <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:
foundation module does that automatically.)
</p> </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 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 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 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::Defn::create_language</span><span class="plain">();</span>
<span class="functiontext">Inter::Types::create_all</span><span class="plain">();</span> <span class="functiontext">Inter::Types::create_all</span><span class="plain">();</span>
<span class="plain">}</span> <span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">The function InterModule::start appears nowhere else.</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> <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="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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </main>

View file

@ -59,9 +59,10 @@
<!--Weave of '1/km' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
@ -101,17 +102,18 @@
<p class="inwebparagraph"></p> <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 <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:
foundation module does that automatically.)
</p> </p>
<pre class="display"> <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> <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 memory allocation reasons</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 stream writers</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.4</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 command line switches</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.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> <span class="plain">}</span>
</pre> </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::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"> <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> </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="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"> <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">KIND_CREATIONS_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">MATCHING_DA</span> <span class="definitionkeyword">enum</span> <span class="constant">MATCHING_DA</span>
</pre> </pre>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display"> <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.3</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p> </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="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"> <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> </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="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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </main>

View file

@ -59,9 +59,10 @@
<!--Weave of '1/lm' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
@ -107,30 +108,33 @@
<p class="inwebparagraph"></p> <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 <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:
foundation module does that automatically.)
</p> </p>
<pre class="display"> <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> <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 memory allocation reasons</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 stream writers</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.4</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 command line switches</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.5</span>&gt;<span class="character">;</span>
<span class="functiontext">Cardinals::enable_in_word_form</span><span class="plain">();</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">Articles::mark_for_preform</span><span class="plain">();</span>
<span class="functiontext">Prepositions::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="functiontext">Diagrams::setup</span><span class="plain">();</span>
<span class="plain">}</span> <span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">LinguisticsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">The function LinguisticsModule::start appears nowhere else.</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"> <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> </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="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"> <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_USAGES_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">VERB_FORMS_DA</span> <span class="definitionkeyword">enum</span> <span class="constant">VERB_FORMS_DA</span>
</pre> </pre>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display"> <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.3</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p> </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="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"> <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.4</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p> </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">'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">'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> <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> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</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"> <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
&lt;<span class="cwebmacrodefn">Register this module's command line switches</span> <span class="cwebmacronumber">3.5</span>&gt; = syntax tree.
</code></p> </p>
<pre class="displaydefn"> <pre class="definitions">
<span class="plain">;</span> <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> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</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 class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b></p> </p>
<pre class="display"> <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="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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </main>

View file

@ -59,7 +59,7 @@
<!--Weave of '2/em' generated by 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="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 <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 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="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 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
</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
an excerpt meaning is to interpreted. For instance, "Persian carpet" might 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>. have a meaning with code <code class="display"><span class="extract">NOUN_MC</span></code>.
</p> </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>+ TABLE_MC<code class="display"><span class="extract"> might mean "either a property name or a table name".
</span></code></p> </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.) one of the <code class="display"><span class="extract">*_MC</span></code> values. (It is never a bitmap combination.)
</p> </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">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> <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> </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> </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="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> </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="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. as yet.
</p> </p>
@ -247,9 +231,9 @@ as yet.
<p class="inwebparagraph"></p> <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> </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="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> </p>
@ -291,11 +275,11 @@ as yet.
<p class="inwebparagraph"></p> <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="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, easy to test whether the words in one excerpt can all be found in another,
or to be more exact whether or to be more exact whether
</p> </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. easy to test whether an excerpt contains any of the literals.
</p> </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 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 expensive to calculate, but every ounce of speed helps here, so we cache
the most recent. 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">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="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="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="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">h</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> <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="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, code its token list. But only some of the tokens are vocabulary entries,
while others instead represent gaps where arbitrary text can appear (referred 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, 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="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="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="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="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="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> <span class="plain">}</span>
@ -383,9 +367,9 @@ same meaning as in the first case above.)
<p class="inwebparagraph"></p> <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 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. literals, are more or less evenly distributed in about the range 0 to 1000.
</p> </p>
@ -396,7 +380,7 @@ for the whole excerpt is as follows.
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -409,9 +393,9 @@ for the whole excerpt is as follows.
<p class="inwebparagraph"></p> <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 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 it ignores the order of the words and repetitions. The three least
significant bits indicate whether numbers, text or I6 verbatims are 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. rewards of saving unnecessary tests are greatest.
</p> </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 keyed by the hash values of excerpts &mdash; with hash values as large as
2^{31}-1, that would be practically impossible. 2^{31}-1, that would be practically impossible.
</p> </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="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> <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">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">14.2</span>&gt;<span class="plain">;</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="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="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="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> <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="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">EM_ALLOW_BLANK_TEST</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="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> <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="plain">#</span><span class="identifier">endif</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> <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> <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="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">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">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="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>
<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="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>
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -539,9 +523,9 @@ resort; happily phrases both starting and ending with <code class="display"><spa
<p class="inwebparagraph"></p> <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 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 codes share the same numbering space. If we register "Table of Surgical
Instruments" as a table name, the word "surgical", for instance, picks Instruments" as a table name, the word "surgical", for instance, picks
@ -558,7 +542,7 @@ positives.
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -571,16 +555,16 @@ positives.
<p class="inwebparagraph"></p> <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 waste time trying to see if the excerpt "the" might be a reference to the
object "Gregory the Great". object "Gregory the Great".
</p> </p>
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -602,15 +586,15 @@ object "Gregory the Great".
<p class="inwebparagraph"></p> <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. constructions translate to.
</p> </p>
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -628,10 +612,10 @@ constructions translate to.
<p class="inwebparagraph"></p> <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"> <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">14.5</span>&gt; = &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> </code></p>
@ -643,14 +627,14 @@ constructions translate to.
<p class="inwebparagraph"></p> <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>
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -662,14 +646,14 @@ constructions translate to.
<p class="inwebparagraph"></p> <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>
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -681,9 +665,9 @@ constructions translate to.
<p class="inwebparagraph"></p> <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. excerpt parser, so these never live on into trees.
</p> </p>
@ -698,9 +682,9 @@ excerpt parser, so these never live on into trees.
<p class="inwebparagraph"></p> <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. meanings.
</p> </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> <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="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> <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> <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="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> <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="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 text substitutions need to distinguish (for instance) "say [the X]" from
"say [an X]". "say [an X]".
</p> </p>
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -766,9 +750,9 @@ text substitutions need to distinguish (for instance) "say [the X]" from
<p class="inwebparagraph"></p> <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 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: it would when reading the "T" in:
</p> </p>
@ -795,7 +779,7 @@ sensitivity.)
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -813,9 +797,9 @@ sensitivity.)
<p class="inwebparagraph"></p> <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> </p>
<blockquote> <blockquote>
@ -839,7 +823,7 @@ tokens denoting gaps, to result in something like:
<p class="macrodefinition"><code class="display"> <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> </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">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">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> <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="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span> <span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">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="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> <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="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="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> <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="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: their way down to this plughole:
</p> </p>
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -892,9 +876,9 @@ their way down to this plughole:
<p class="inwebparagraph"></p> <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 isn't contiguously present in the lexer, so we also provide a method for
taking it from a word assemblage. taking it from a word assemblage.
</p> </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">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">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> <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="reserved">break</span><span class="plain">;</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> <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="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 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 registering multiple inflected forms of the same text; but it's not worth
going to any trouble to prevent this. going to any trouble to prevent this.
@ -939,7 +923,7 @@ going to any trouble to prevent this.
<p class="macrodefinition"><code class="display"> <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> </code></p>
@ -949,7 +933,7 @@ going to any trouble to prevent this.
<p class="inwebparagraph"></p> <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"> <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"> <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="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> <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="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 <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 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::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> <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="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 <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. 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::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> <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::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> <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::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"> <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"> <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">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">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">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="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="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">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> <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="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"> <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::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"> <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"> <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--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
@ -85,17 +86,18 @@
<p class="inwebparagraph"></p> <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 <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:
foundation module does that automatically.)
</p> </p>
<pre class="display"> <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> <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 memory allocation reasons</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 stream writers</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 debugging log aspects</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 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> <span class="plain">}</span>
</pre> </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::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"> <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> </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="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"> <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> </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="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"> <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> </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="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"> <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> </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="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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </main>

View file

@ -59,15 +59,92 @@
<!--Weave of '1/pm' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">PROBLEMS_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span> <span class="definitionkeyword">define</span> <span class="constant">PROBLEMS_MODULE</span><span class="plain"> </span><span class="identifier">TRUE</span>
</pre> </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"> <pre class="definitions">
@ -81,89 +158,6 @@
<p class="inwebparagraph"></p> <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"> <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"> <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--> <!--End of weave-->

View file

@ -59,9 +59,10 @@
<!--Weave of '1/sm' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <pre class="definitions">
@ -85,27 +86,30 @@
<p class="inwebparagraph"></p> <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 <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:
foundation module does that automatically.)
</p> </p>
<pre class="display"> <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> <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 memory allocation reasons</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 stream writers</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.4</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 command line switches</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.5</span>&gt;<span class="character">;</span>
<span class="functiontext">ParseTree::metadata_setup</span><span class="plain">();</span> <span class="functiontext">ParseTree::metadata_setup</span><span class="plain">();</span>
<span class="plain">}</span> <span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">SyntaxModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">The function SyntaxModule::start appears nowhere else.</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"> <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> </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="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"> <pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">VERIFICATIONS_DA</span> <span class="definitionkeyword">enum</span> <span class="constant">VERIFICATIONS_DA</span>
</pre> </pre>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display"> <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.3</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p> </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="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"> <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.4</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p> </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="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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </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">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">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">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">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> <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> </pre>
@ -528,7 +526,7 @@ never be used.
<p class="inwebparagraph"></p> <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> <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="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 <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 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="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 class="inwebparagraph"><a id="SP48"></a><b>&#167;48. </b>This is occasionally useful:
</p> </p>

View file

@ -59,14 +59,14 @@
<!--Weave of '1/wm' generated by 7--> <!--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="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. </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
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Introduction. </b></p> which use this module:
</p>
<pre class="definitions"> <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">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> </pre>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </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> </p>
@ -94,8 +94,7 @@
<p class="inwebparagraph"></p> <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 <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:
foundation module does that automatically.)
</p> </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="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_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> <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 memory allocation reasons</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 stream writers</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.4</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 command line switches</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.5</span>&gt;<span class="character">;</span>
<span class="functiontext">Lexer::start</span><span class="plain">();</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">Vocabulary::create_punctuation</span><span class="plain">();</span>
<span class="functiontext">Preform::begin</span><span class="plain">();</span> <span class="functiontext">Preform::begin</span><span class="plain">();</span>
<span class="plain">}</span> <span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">WordsModule::end</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre> </pre>
<p class="inwebparagraph"></p> <p class="inwebparagraph"></p>
<p class="endnote">The function WordsModule::start appears nowhere else.</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"> <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> </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="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"> <pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">LEXICAL_OUTPUT_DA</span> <span class="definitionkeyword">enum</span> <span class="constant">LEXICAL_OUTPUT_DA</span>
<span class="definitionkeyword">enum</span> <span class="constant">VOCABULARY_DA</span> <span class="definitionkeyword">enum</span> <span class="constant">VOCABULARY_DA</span>
</pre> </pre>
<p class="inwebparagraph"><a id="SP3_3"></a><b>&#167;3.3. </b><code class="display"> <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.3</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log aspects</span> <span class="cwebmacronumber">3.4</span>&gt; =
</code></p> </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="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"> <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.4</span>&gt; = &lt;<span class="cwebmacrodefn">Register this module's debugging log writers</span> <span class="cwebmacronumber">3.5</span>&gt; =
</code></p> </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="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"> <hr class="tocbar">
<!--End of weave--> <!--End of weave-->
</main> </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::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 <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 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::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 <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: 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::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> <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="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> <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::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, <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 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="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 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> </p>

View file

@ -2,7 +2,9 @@
Setting up the use of this 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 ARCH_MODULE TRUE @d ARCH_MODULE TRUE
@ -17,7 +19,7 @@ ALLOCATE_INDIVIDUALLY(inter_architecture)
ALLOCATE_INDIVIDUALLY(target_vm) ALLOCATE_INDIVIDUALLY(target_vm)
ALLOCATE_INDIVIDUALLY(compatibility_specification) ALLOCATE_INDIVIDUALLY(compatibility_specification)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
= =
void ArchModule::start(void) { void ArchModule::start(void) {
@ -25,12 +27,11 @@ void ArchModule::start(void) {
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
Architectures::create(); Architectures::create();
TargetVMs::create(); TargetVMs::create();
} }
void ArchModule::end(void) {
@ }
@<Register this module's memory allocation reasons@> = @<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 stream writers@> =
; ;
@
@<Register this module's debugging log aspects@> = @<Register this module's debugging log aspects@> =
; ;
@<Register this module's debugging log writers@> = @<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. 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 @d HTML_MODULE TRUE
@ To begin with, this module needs to allocate memory: @ Like all modules, this one must define a |start| and |end| function:
=
@h The beginning.
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void HTMLModule::start(void) { void HTMLModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<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@> = @<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 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@> = @<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; 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) { heading *Headings::from_node(parse_node *PN) {
return ParseTree::get_embodying_heading(PN); return ParseTree::get_embodying_heading(PN);
} }

View file

@ -2,7 +2,9 @@
Setting up the use of this 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 SYNTAX_MODULE TRUE @d SYNTAX_MODULE TRUE
@ -17,18 +19,21 @@ ALLOCATE_INDIVIDUALLY(parse_node)
ALLOCATE_INDIVIDUALLY(parse_node_tree) ALLOCATE_INDIVIDUALLY(parse_node_tree)
ALLOCATE_IN_ARRAYS(parse_node_annotation, 500) ALLOCATE_IN_ARRAYS(parse_node_annotation, 500)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void SyntaxModule::start(void) { void SyntaxModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
ParseTree::metadata_setup(); ParseTree::metadata_setup();
} }
void SyntaxModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> = @<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_I('N', ParseTree::log_type);
Writers::register_logger('P', ParseTree::log_node); Writers::register_logger('P', ParseTree::log_node);
Writers::register_logger('T', ParseTree::log_subtree); 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 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 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 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 */ @e implied_heading_ANNOT /* int: set only for the heading of implied inclusions */
@d MAX_ANNOT_NUMBER (NO_DEFINED_ANNOT_VALUES+1) @d MAX_ANNOT_NUMBER (NO_DEFINED_ANNOT_VALUES+1)

View file

@ -2,10 +2,11 @@
Setting up the use of this 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 WORDS_MODULE TRUE @d WORDS_MODULE TRUE
@d WORDING_LOGS_ALLOWED
@ To begin with, this module needs to allocate memory: @ To begin with, this module needs to allocate memory:
@ -27,22 +28,25 @@ ALLOCATE_INDIVIDUALLY(production_list)
ALLOCATE_INDIVIDUALLY(production) ALLOCATE_INDIVIDUALLY(production)
ALLOCATE_INDIVIDUALLY(ptoken) ALLOCATE_INDIVIDUALLY(ptoken)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void WordsModule::start(void) { void WordsModule::start(void) {
Memory::reason_name(LEXER_TEXT_MREASON, "source text"); Memory::reason_name(LEXER_TEXT_MREASON, "source text");
Memory::reason_name(LEXER_WORDS_MREASON, "source text details"); 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 stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
Lexer::start(); Lexer::start();
Vocabulary::create_punctuation(); Vocabulary::create_punctuation();
Preform::begin(); Preform::begin();
} }
void WordsModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> = @<Register this module's stream writers@> =
Writers::register_writer('A', &WordAssemblages::writer); Writers::register_writer('A', &WordAssemblages::writer);
@ -62,12 +66,3 @@ void WordsModule::start(void) {
@<Register this module's debugging log writers@> = @<Register this module's debugging log writers@> =
Writers::register_logger('f', WordAssemblages::log); Writers::register_logger('f', WordAssemblages::log);
Writers::register_logger('v', Vocabulary::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. Setting up the use of this module.
@ There is no interesting code in this section: all Intools modules open with @ This section simoly sets up the module in ways expected by |foundation|, and
a section like this one, configuring the memory management and debugging log contains no code of interest. The following constant exists only in tools
features we will use from |foundation|. which use this module:
The following symbol is defined in every tool incorporating this module:
@d CORE_MODULE TRUE @d CORE_MODULE TRUE
@h Setting up the memory manager. @ To begin with, this module needs to allocate memory:
We need to itemise the structures we'll want to allocate:
@e bibliographic_datum_MT @e bibliographic_datum_MT
@e phrase_MT @e phrase_MT
@ -184,11 +181,8 @@ ALLOCATE_IN_ARRAYS(stacked_variable, 100)
ALLOCATE_IN_ARRAYS(table_contribution, 100) ALLOCATE_IN_ARRAYS(table_contribution, 100)
ALLOCATE_IN_ARRAYS(value_holster, 100) ALLOCATE_IN_ARRAYS(value_holster, 100)
@h The beginning. @ Next we define some functions, by macro, which write to the debugging log
(The client doesn't need to call the start and end routines, because the or other text streams.
foundation module does that automatically.)
@d WORDING_LOGS_ALLOWED
@d REGISTER_WRITER(c, f) Writers::register_logger(c, &f##_writer); @d REGISTER_WRITER(c, f) Writers::register_logger(c, &f##_writer);
@d COMPILE_WRITER(t, f) @d COMPILE_WRITER(t, f)
@ -233,13 +227,17 @@ COMPILE_WRITER(property *, Properties::log)
COMPILE_WRITER(nonlocal_variable *, NonlocalVariables::log) COMPILE_WRITER(nonlocal_variable *, NonlocalVariables::log)
COMPILE_WRITER(noun *, Nouns::log) COMPILE_WRITER(noun *, Nouns::log)
@ = @ Like all modules, this one must define a |start| and |end| function:
=
void CoreModule::start(void) { void CoreModule::start(void) {
@<Register this module's memory allocation reasons@>; @<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<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 @ 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. 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. @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 @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_PHRASE_OPTION_NT /* "giving full details", say */
@e TEST_VALUE_NT /* when a value is used as a condition */ @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 @e L4_NCAT

View file

@ -2,17 +2,9 @@
Setting up the use of this module. Setting up the use of this module.
@h Predeclarations. @ 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
= (early code) which use this module:
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.
@d IF_MODULE TRUE @d IF_MODULE TRUE
@ -104,11 +96,16 @@ COMPILE_WRITER(action_name_list *, PL::Actions::Lists::log)
COMPILE_WRITER(action_name *, PL::Actions::log) COMPILE_WRITER(action_name *, PL::Actions::log)
void IFModule::start(void) { void IFModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<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@> = @<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::Lists::log);
REGISTER_WRITER('l', PL::Actions::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. = (early code)
DECLARE_ANNOTATION_FUNCTIONS(action_meaning, action_pattern)
= DECLARE_ANNOTATION_FUNCTIONS(constant_action_name, action_name)
void IFModule::end(void) { 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. 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 @d INDEX_MODULE TRUE
@ -19,16 +21,20 @@ ALLOCATE_INDIVIDUALLY(index_element)
ALLOCATE_INDIVIDUALLY(index_page) ALLOCATE_INDIVIDUALLY(index_page)
ALLOCATE_INDIVIDUALLY(lexicon_entry) ALLOCATE_INDIVIDUALLY(lexicon_entry)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void IndexModule::start(void) { void IndexModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<Register this module's debugging log writers@>;
} }
void IndexModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> = @<Register this module's stream writers@> =
; ;
@ -38,9 +44,3 @@ void IndexModule::start(void) {
@<Register this module's debugging log writers@> = @<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. 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 @d INFLECTIONS_MODULE TRUE
@ -19,9 +21,7 @@ ALLOCATE_INDIVIDUALLY(name_cluster)
ALLOCATE_INDIVIDUALLY(plural_dictionary_entry) ALLOCATE_INDIVIDUALLY(plural_dictionary_entry)
ALLOCATE_INDIVIDUALLY(verb_conjugation) ALLOCATE_INDIVIDUALLY(verb_conjugation)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void InflectionsModule::start(void) { void InflectionsModule::start(void) {
@ -30,6 +30,8 @@ void InflectionsModule::start(void) {
@<Register this module's debugging log writers@>; @<Register this module's debugging log writers@>;
@<Register this module's command line switches@>; @<Register this module's command line switches@>;
} }
void InflectionsModule::end(void) {
}
@<Register this module's stream writers@> = @<Register this module's stream writers@> =
; ;
@ -48,9 +50,3 @@ void InflectionsModule::start(void) {
@<Register this module's command line switches@> = @<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. 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 @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(kind_constructor_instance, 100)
ALLOCATE_IN_ARRAYS(unit_sequence, 50) ALLOCATE_IN_ARRAYS(unit_sequence, 50)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void KindsModule::start(void) { void KindsModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<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@> = @<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 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. 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 @d LINGUISTICS_MODULE TRUE
@ -39,21 +41,24 @@ ALLOCATE_IN_ARRAYS(time_period, 100)
ALLOCATE_INDIVIDUALLY(excerpt_meaning) ALLOCATE_INDIVIDUALLY(excerpt_meaning)
ALLOCATE_INDIVIDUALLY(noun) ALLOCATE_INDIVIDUALLY(noun)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void LinguisticsModule::start(void) { void LinguisticsModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
Cardinals::enable_in_word_form(); Cardinals::enable_in_word_form();
Articles::mark_for_preform(); Articles::mark_for_preform();
Prepositions::mark_for_preform(); Prepositions::mark_for_preform();
Diagrams::setup(); Diagrams::setup();
} }
void LinguisticsModule::end(void) {
}
@<Register this module's memory allocation reasons@> =
;
@<Register this module's stream writers@> = @<Register this module's stream writers@> =
; ;
@ -80,20 +85,47 @@ void LinguisticsModule::start(void) {
Writers::register_logger('w', Verbs::log_verb); Writers::register_logger('w', Verbs::log_verb);
Writers::register_logger('y', VerbMeanings::log); 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) { void LinguisticsModule::preform_optimiser(void) {
Cardinals::preform_optimiser(); Cardinals::preform_optimiser();
VerbUsages::preform_optimiser(); VerbUsages::preform_optimiser();
Prepositions::preform_optimiser(); Prepositions::preform_optimiser();
Quantifiers::make_built_in(); Quantifiers::make_built_in();
} }
@h The end.
=
void LinguisticsModule::end(void) {
}

View file

@ -64,15 +64,6 @@ typedef struct excerpt_meaning {
MEMORY_MANAGEMENT MEMORY_MANAGEMENT
} excerpt_meaning; } 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. @h Meaning codes.
These assign a context to a meaning, and so decide how the |data| pointer for 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 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 KIND_NT /* "A woman is a kind of person" */
@e PROPERTY_LIST_NT /* "capacity 2" */ @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? */ @d ASSERT_NFLAG 0x00000008 /* allow this on either side of an assertion? */
@e TwoLikelihoods_LINERROR @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) { 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) { 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 }); 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. 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 @d MULTIMEDIA_MODULE TRUE
@ -17,17 +19,20 @@ ALLOCATE_INDIVIDUALLY(blorb_figure)
ALLOCATE_INDIVIDUALLY(blorb_sound) ALLOCATE_INDIVIDUALLY(blorb_sound)
ALLOCATE_INDIVIDUALLY(external_file) ALLOCATE_INDIVIDUALLY(external_file)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void MultimediaModule::start(void) { void MultimediaModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<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@> = @<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 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. 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 @d PROBLEMS_MODULE TRUE
@h Annotations. @ Like all modules, this one must define a |start| and |end| function:
@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.)
= =
void ProblemsModule::start(void) { void ProblemsModule::start(void) {
@<Register this module's memory allocation reasons@>;
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<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); 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@> = @<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 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. 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 @d CODEGEN_MODULE TRUE
@h Setting up the memory manager. @ To begin with, this module needs to allocate memory:
We need to itemise the structures we'll want to allocate:
@e I6T_intervention_MT @e I6T_intervention_MT
@e codegen_pipeline_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 generated_segment_MT
@e link_instruction_MT @e link_instruction_MT
@ With allocation functions:
= =
ALLOCATE_INDIVIDUALLY(I6T_intervention) ALLOCATE_INDIVIDUALLY(I6T_intervention)
ALLOCATE_INDIVIDUALLY(codegen_pipeline) ALLOCATE_INDIVIDUALLY(codegen_pipeline)
@ -36,9 +35,7 @@ ALLOCATE_INDIVIDUALLY(code_generation)
ALLOCATE_INDIVIDUALLY(generated_segment) ALLOCATE_INDIVIDUALLY(generated_segment)
ALLOCATE_INDIVIDUALLY(link_instruction) ALLOCATE_INDIVIDUALLY(link_instruction)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void CodegenModule::start(void) { void CodegenModule::start(void) {
@ -46,7 +43,8 @@ void CodegenModule::start(void) {
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<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 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. 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 @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_tree_node, 8192)
ALLOCATE_IN_ARRAYS(inter_annotation, 8192) ALLOCATE_IN_ARRAYS(inter_annotation, 8192)
@h The beginning. @ Like all modules, this one must define a |start| and |end| function:
(The client doesn't need to call the start and end routines, because the
foundation module does that automatically.)
= =
void InterModule::start(void) { void InterModule::start(void) {
@ -53,11 +53,12 @@ void InterModule::start(void) {
@<Register this module's stream writers@>; @<Register this module's stream writers@>;
@<Register this module's debugging log aspects@>; @<Register this module's debugging log aspects@>;
@<Register this module's debugging log writers@>; @<Register this module's debugging log writers@>;
@<Register this module's command line switches@>;
Inter::Defn::create_language(); Inter::Defn::create_language();
Inter::Types::create_all(); 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('4', Inter::SymbolsTables::log);
Writers::register_logger('5', Inter::Bookmarks::log); Writers::register_logger('5', Inter::Bookmarks::log);
Writers::register_logger('6', Inter::Packages::log); Writers::register_logger('6', Inter::Packages::log);
@<Register this module's command line switches@> =
;
@h The end.
=
void InterModule::end(void) {
}